<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="hu">
	<id>https://vik.wiki/index.php?action=history&amp;feed=atom&amp;title=Szoftverfejleszt%C3%A9s_.NET_platformon_-_Jegyzet_7._fejezet</id>
	<title>Szoftverfejlesztés .NET platformon - Jegyzet 7. fejezet - Laptörténet</title>
	<link rel="self" type="application/atom+xml" href="https://vik.wiki/index.php?action=history&amp;feed=atom&amp;title=Szoftverfejleszt%C3%A9s_.NET_platformon_-_Jegyzet_7._fejezet"/>
	<link rel="alternate" type="text/html" href="https://vik.wiki/index.php?title=Szoftverfejleszt%C3%A9s_.NET_platformon_-_Jegyzet_7._fejezet&amp;action=history"/>
	<updated>2026-05-11T08:29:52Z</updated>
	<subtitle>Az oldal laptörténete a wikiben</subtitle>
	<generator>MediaWiki 1.43.8</generator>
	<entry>
		<id>https://vik.wiki/index.php?title=Szoftverfejleszt%C3%A9s_.NET_platformon_-_Jegyzet_7._fejezet&amp;diff=165780&amp;oldid=prev</id>
		<title>Hryghr: Hryghr átnevezte a(z) Szoftverfejlesztés .NET plattformon - Jegyzet 7. fejezet lapot a következő névre: Szoftverfejlesztés .NET platformon - Jegyzet 7. fejezet: pontos név</title>
		<link rel="alternate" type="text/html" href="https://vik.wiki/index.php?title=Szoftverfejleszt%C3%A9s_.NET_platformon_-_Jegyzet_7._fejezet&amp;diff=165780&amp;oldid=prev"/>
		<updated>2013-05-19T21:27:55Z</updated>

		<summary type="html">&lt;p&gt;Hryghr átnevezte a(z) &lt;a href=&quot;/index.php?title=Szoftverfejleszt%C3%A9s_.NET_plattformon_-_Jegyzet_7._fejezet&amp;amp;action=edit&amp;amp;redlink=1&quot; class=&quot;new&quot; title=&quot;Szoftverfejlesztés .NET plattformon - Jegyzet 7. fejezet (a lap nem létezik)&quot;&gt;Szoftverfejlesztés .NET plattformon - Jegyzet 7. fejezet&lt;/a&gt; lapot a következő névre: &lt;a href=&quot;/Szoftverfejleszt%C3%A9s_.NET_platformon_-_Jegyzet_7._fejezet&quot; title=&quot;Szoftverfejlesztés .NET platformon - Jegyzet 7. fejezet&quot;&gt;Szoftverfejlesztés .NET platformon - Jegyzet 7. fejezet&lt;/a&gt;: pontos név&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;hu&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Régebbi változat&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;A lap 2013. május 19., 23:27-kori változata&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;4&quot; class=&quot;diff-notice&quot; lang=&quot;hu&quot;&gt;&lt;div class=&quot;mw-diff-empty&quot;&gt;(Nincs különbség)&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;
&lt;!-- diff cache key my_wiki:diff:1.41:old-156936:rev-165780 --&gt;
&lt;/table&gt;</summary>
		<author><name>Hryghr</name></author>
	</entry>
	<entry>
		<id>https://vik.wiki/index.php?title=Szoftverfejleszt%C3%A9s_.NET_platformon_-_Jegyzet_7._fejezet&amp;diff=156936&amp;oldid=prev</id>
		<title>David14: David14 átnevezte a(z) Threading lapot a következő névre: Szoftverfejlesztés .NET plattformon - Jegyzet 7. fejezet</title>
		<link rel="alternate" type="text/html" href="https://vik.wiki/index.php?title=Szoftverfejleszt%C3%A9s_.NET_platformon_-_Jegyzet_7._fejezet&amp;diff=156936&amp;oldid=prev"/>
		<updated>2013-02-05T22:03:01Z</updated>

		<summary type="html">&lt;p&gt;David14 átnevezte a(z) &lt;a href=&quot;/index.php?title=Threading&amp;amp;action=edit&amp;amp;redlink=1&quot; class=&quot;new&quot; title=&quot;Threading (a lap nem létezik)&quot;&gt;Threading&lt;/a&gt; lapot a következő névre: &lt;a href=&quot;/index.php?title=Szoftverfejleszt%C3%A9s_.NET_plattformon_-_Jegyzet_7._fejezet&amp;amp;action=edit&amp;amp;redlink=1&quot; class=&quot;new&quot; title=&quot;Szoftverfejlesztés .NET plattformon - Jegyzet 7. fejezet (a lap nem létezik)&quot;&gt;Szoftverfejlesztés .NET plattformon - Jegyzet 7. fejezet&lt;/a&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;hu&quot;&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Régebbi változat&lt;/td&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;A lap 2013. február 6., 00:03-kori változata&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-notice&quot; lang=&quot;hu&quot;&gt;&lt;div class=&quot;mw-diff-empty&quot;&gt;(Nincs különbség)&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;</summary>
		<author><name>David14</name></author>
	</entry>
	<entry>
		<id>https://vik.wiki/index.php?title=Szoftverfejleszt%C3%A9s_.NET_platformon_-_Jegyzet_7._fejezet&amp;diff=145915&amp;oldid=prev</id>
		<title>Unknown user: Új oldal, tartalma: „{{GlobalTemplate|Valaszthato|MCP70-536Threading}}   70-536 .NET framework 2.0 Application Development Foundation   %TOC{depth=&quot;3&quot;}%  &lt;div id=&quot;threading&quot;&gt;&lt;/div&gt; ==Szála…”</title>
		<link rel="alternate" type="text/html" href="https://vik.wiki/index.php?title=Szoftverfejleszt%C3%A9s_.NET_platformon_-_Jegyzet_7._fejezet&amp;diff=145915&amp;oldid=prev"/>
		<updated>2012-10-22T11:44:00Z</updated>

		<summary type="html">&lt;p&gt;Új oldal, tartalma: „{{GlobalTemplate|Valaszthato|MCP70-536Threading}}   70-536 .NET framework 2.0 Application Development Foundation   %TOC{depth=&amp;quot;3&amp;quot;}%  &amp;lt;div id=&amp;quot;threading&amp;quot;&amp;gt;&amp;lt;/div&amp;gt; ==Szála…”&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Új lap&lt;/b&gt;&lt;/p&gt;&lt;div&gt;{{GlobalTemplate|Valaszthato|MCP70-536Threading}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
70-536 .NET framework 2.0 Application Development Foundation &lt;br /&gt;
&lt;br /&gt;
%TOC{depth=&amp;quot;3&amp;quot;}%&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;threading&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
==Szálak==&lt;br /&gt;
&lt;br /&gt;
=System.Threading= névtér&lt;br /&gt;
&lt;br /&gt;
Előny: felhasználói élmény növelése, nagyobb processzor kihasználtság. &amp;lt;br&amp;gt;&lt;br /&gt;
A szálak memóriaterülete közös, a processzeké különböző.&lt;br /&gt;
&lt;br /&gt;
Thread osztály&lt;br /&gt;
* =IsAlive=: éppen fut-e&lt;br /&gt;
* =IsBackground=: háttér szál-e. A háttér szálak a programból való kilépéskor automatikusan lelövődnek.&lt;br /&gt;
* =IsThreadpoolThread=: thread pool-ból lett-e lekérve&lt;br /&gt;
* =Name=: név lekérdezése és megváltoztatása&lt;br /&gt;
* =Priority=: prioritás lekérdezése és megváltoztatása.&lt;br /&gt;
	  Lehetséges értékei: =Highest=, =AboveNormal=, =Normal=, =BelowNormal=, =Lowest=&lt;br /&gt;
* =ThreadContext CurrentContext=&lt;br /&gt;
* =CurrentPrincipal=: a szálat futtató felhasználó&lt;br /&gt;
* =CurrentThread= (statikus)&lt;br /&gt;
* =Start()=: szál indításának ütemezése&lt;br /&gt;
* =Join()=: szál befejeződésének megvárása&lt;br /&gt;
* =Sleep()=: aktuális szál várakoztatása (statikus)&lt;br /&gt;
&lt;br /&gt;
ThreadState&lt;br /&gt;
* =Suspended= (deprecated)&lt;br /&gt;
* =Aborted=&lt;br /&gt;
* =AbortRequested=&lt;br /&gt;
* =Background=: az alkalmazás végén automatikusan lelövi&lt;br /&gt;
* =Running=&lt;br /&gt;
* =Stopped=&lt;br /&gt;
* ...&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;thread_start_stop&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
===Szálak indítása és leállítása===&lt;br /&gt;
&lt;br /&gt;
# =ThreadStart= objektum létrehozása (prioritás, stb. megadása)&lt;br /&gt;
		(szálkezelő függvény: =void Foo()=) vagy &amp;lt;br&amp;gt;&lt;br /&gt;
		=ParameterizedThreadStart= létrehozása&lt;br /&gt;
		(szálkezelő függvény: &amp;lt;pre&amp;gt;void Foo(object parameter)&amp;lt;/pre&amp;gt;) &amp;lt;br&amp;gt;&lt;br /&gt;
# =Thread= létrehozása&lt;br /&gt;
# Szál elindítása&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Szál indítása paraméter nélkül&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
static void SimpleWork() {&lt;br /&gt;
	 Console.WriteLine(&amp;quot;Thread: {0}&amp;quot;, Thread.CurrentThread.ManagedThreadId);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
Thread thread = new Thread(new ThreadStart(SimpleWork));&lt;br /&gt;
thread.Start();&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Szál indítása paraméterrel&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
static void WorkWithParameter(object o) {&lt;br /&gt;
	 Console.WriteLine(&amp;quot;{0}: {1}&amp;quot;, o, Thread.CurrentThread.ManagedThreadId);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
ParameterizedThreadStart operation = new ParameterizedThreadStart(WorkWithParameter);&lt;br /&gt;
Thread thread1 = new Thread(operation);&lt;br /&gt;
thread1.Start(&amp;quot;Hello&amp;quot;);&lt;br /&gt;
Thread thread2 = new Thread(operation);&lt;br /&gt;
thread2.Start(&amp;quot;Goodbye&amp;quot;);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Szál bevárása&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
A =thread.Join()= hívás blokkolja az aktuális szálat, amíg a =thread= szál futása be nem fejeződik.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Szál megszakítása&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
A =thread.Abort()= hívás megszakítja a szál futását. A futás aktuális pozícióján dob egy &amp;lt;pre&amp;gt;ThreadAbortException&amp;lt;/pre&amp;gt;-t, amit a szálkezelő függvény elkaphat és lekezelhet. A szál megszakítása inkonzisztens állapothoz vezethet, ezért a szálkezelő rendszerrel tudatni kell, hogy hol szakítható meg a szál futása.&lt;br /&gt;
&lt;br /&gt;
A =Thread.BeginCriticalRegion()= és a =Thread.EndCriticalRegion()= közötti kód nem szakítható meg &amp;lt;pre&amp;gt;Abort&amp;lt;/pre&amp;gt;-tal.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Execution Context&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
Tartalmazza&lt;br /&gt;
* a futtató usert (=IPrincipal=),&lt;br /&gt;
* a lokalizációs beállításokat és&lt;br /&gt;
* a tranzakciós beállításokat.&lt;br /&gt;
&lt;br /&gt;
Metódusai&lt;br /&gt;
* =ExecutionContext.SuppressFlow()=: az automatikus context átadás kikapcsolása (gyorsítja a szál váltást)&lt;br /&gt;
* =ExecutionContext.RestoreFlow()=: visszakapcsolás&lt;br /&gt;
* =ExecutionContext.Capture()=: aktuális context lekérdezése&lt;br /&gt;
* =ExecutionContext.Run(context, ContextCallback)=: metódus futtatása adott contexttel&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;thread_synchronization&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
===Szinkronizáció===&lt;br /&gt;
&lt;br /&gt;
Ha a szálak közös memóriaterületet használnak, szinkronizálni kell a hozzáférést.&lt;br /&gt;
&lt;br /&gt;
====Könnyűsúlyú objektumok====&lt;br /&gt;
&lt;br /&gt;
=Interlocked= osztály: 5 műveletet tud atomi módon elvégezni&lt;br /&gt;
* =Add()=: két szám összeadása&lt;br /&gt;
* =Decrement()=: szám csökkentése&lt;br /&gt;
* =Exchange()=: két szám megcserélése&lt;br /&gt;
* =Increment()=: számot növel. Pl. =Interlocked.Increment(ref counter);=&lt;br /&gt;
* =Read()=: 64 bites számot atomi műveletként olvas be&lt;br /&gt;
&lt;br /&gt;
=Monitor=&lt;br /&gt;
* =TryEnter()=: próbál lockolni, timeout megadható (pl. &amp;lt;pre&amp;gt;Timeout.Infinite&amp;lt;/pre&amp;gt;)&lt;br /&gt;
* =Enter(object)=: lockol, csak referencia típusú paramétert fogad el&lt;br /&gt;
* =Exit(object)=: elengedi a zárat&lt;br /&gt;
* =Wait()=: elengedi a zárat és vár, amíg nem kaphatja meg újra&lt;br /&gt;
&lt;br /&gt;
=lock=: &amp;lt;pre&amp;gt;Monitor&amp;lt;/pre&amp;gt;-ra fordul.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
lock(obj) { &lt;br /&gt;
	 op;&lt;br /&gt;
} &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
jelentése&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Monitor.Enter(obj); &lt;br /&gt;
try {&lt;br /&gt;
	 op;&lt;br /&gt;
} finally {&lt;br /&gt;
	 Monitor.Exit(obj);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=ReaderWriterLock=: olvasási és írási lock külön kérhető&lt;br /&gt;
* =IsReaderLockHeld=, =IsWriterLockHeld=&lt;br /&gt;
* ={Acquire|Release}{ReaderWriter}Lock=. A zár kérésénél megadható timeout, ha lejár, &amp;lt;pre&amp;gt;ApplicationException&amp;lt;/pre&amp;gt;-t dob.&lt;br /&gt;
* ={UpgradeTo|DowngradeFrom}WriterLock=: olvasási &amp;amp;harr; írási lock átalakítás&lt;br /&gt;
&lt;br /&gt;
====Kernel objektumok====&lt;br /&gt;
&lt;br /&gt;
* Közös ősosztály: =WaitHandle=&lt;br /&gt;
** =WaitOne()=: elkérés&lt;br /&gt;
** =Close()=: felszabadítás&lt;br /&gt;
* =Mutex=: &amp;lt;pre&amp;gt;AppDomain&amp;lt;/pre&amp;gt;-ek és processzek között is működik,&lt;br /&gt;
	  33x lassabb a &amp;lt;pre&amp;gt;Monitor&amp;lt;/pre&amp;gt;-nál&lt;br /&gt;
** =new Mutex(false, &amp;quot;CommonMutex&amp;quot;)=: processzek közötti mutex létrehozása&lt;br /&gt;
** =Mutex.OpenExisting(&amp;quot;name&amp;quot;)=: létező mutexre referencia kérése&lt;br /&gt;
* =Semaphore=&lt;br /&gt;
** =new Semaphore(currentSlots, maximumSlots)=: névtelen szemafor létrehozása&lt;br /&gt;
** =new Semaphore(currentSlots, maximumSlots, name)=: névvel ellátott szemafor létrehozása&lt;br /&gt;
** =Semaphore.OpenExisting(&amp;quot;name&amp;quot;)=: létező szemaforra referencia kérése&lt;br /&gt;
		  (ha nem létezik, &amp;lt;pre&amp;gt;WaitHandleCannotBeOpenedException&amp;lt;/pre&amp;gt;-t dob)&lt;br /&gt;
* =Event=: két állapota van: jelzett és jelzetlen. Várakozni lehet a jelzett állapotára.&lt;br /&gt;
** Metódusai: =Set()=, =Reset()=&lt;br /&gt;
** =AutoResetEvent=: azonos a működése a &amp;lt;pre&amp;gt;Mutex&amp;lt;/pre&amp;gt;-szel?&lt;br /&gt;
** =ManualResetEvent=: ha jelzettre vált, a &amp;lt;pre&amp;gt;Mutex&amp;lt;/pre&amp;gt;-szel ellentétben az összes rá váró&lt;br /&gt;
		  szál továbbfut; csak =Reset()= hívásra vált vissza jelzetlenre.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;asynchronous_programming&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
==Aszinkron programozás==&lt;br /&gt;
&lt;br /&gt;
=BeginXXX= és =EndXXX= metódusok.&lt;br /&gt;
&lt;br /&gt;
Aszinkron hívási modellek&lt;br /&gt;
* Wait-Until-Done: =EndXXX= meghívásakor megvárja a metódus befejeződését&lt;br /&gt;
* Polling: A =BeginXXX= &amp;lt;pre&amp;gt;IAsyncResult&amp;lt;/pre&amp;gt;-tal tér vissza, amit lehet kérdezgetni, hogy készen van-e (&amp;lt;pre&amp;gt;IsCompleted&amp;lt;/pre&amp;gt; property)&lt;br /&gt;
* Callback: befejeződéskor delegate viszahívása. A =BeginXXX= hívásakor át kell adni plusz paraméterként a callback függvényt.&lt;br /&gt;
** Ha &amp;lt;pre&amp;gt;BeginRead&amp;lt;/pre&amp;gt;-del olvasunk egy streamet, a callback függvénynek nem csak a puffert kell átadni, hanem a streamet is, hogy le tudja zárni.&lt;br /&gt;
&lt;br /&gt;
Példa aszinkron olvasásra callback függvénnyel&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
static byte[] buffer = new byte[100];&lt;br /&gt;
&lt;br /&gt;
static void AsyncRead() {&lt;br /&gt;
	 string filename = Environment.SystemDirectory + &amp;quot;\\mfc71.pdb&amp;quot;;&lt;br /&gt;
	 FileStream fs = new FileStream(&lt;br /&gt;
		  filename, FileMode.Open, FileAccess.Read, FileShare.Read, 1024, FileOptions.Asynchronous);&lt;br /&gt;
	 IAsyncResult result = strm.BeginRead(&lt;br /&gt;
		  buffer, 0, buffer.Length, new AsyncCallback(CompleteRead), fs);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
static void CompleteRead(IAsyncResult result) {&lt;br /&gt;
	 Console.WriteLine(&amp;quot;Read Completed&amp;quot;);&lt;br /&gt;
	 FileStream fs = (FileStream) result.AsyncState;&lt;br /&gt;
	 // az EndRead() nem fog blokkolódni&lt;br /&gt;
	 int numBytes = fs.EndRead(result);&lt;br /&gt;
	 fs.Close();&lt;br /&gt;
	 Console.WriteLine(&amp;quot;Read {0} Bytes&amp;quot;, numBytes);&lt;br /&gt;
	 Console.WriteLine(BitConverter.ToString(buffer));&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Hibakezelés===&lt;br /&gt;
&lt;br /&gt;
Csak az =EndXXX= dobhat exceptiont, mivel a =BeginXXX= által dobott kivételeket a hívó nem tudja lekezelni.&lt;br /&gt;
&lt;br /&gt;
Az aszinkron hívás során keletkező kivételek nem csak az =EndXXX= híváskor, hanem azonnal is lekezelhetők, ha feliratkozunk az =Application.ThreadException= eseményre.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;thread_pool&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
==Thread pool==&lt;br /&gt;
&lt;br /&gt;
Túl sok szál alkalmazása &amp;quot;vergődéshez&amp;quot; vezethet, azaz az operációs rendszer több időt tölt context switchinggel, mint a valódi végrehajtással. A =ThreadPool= használata javít a helyzeten&lt;br /&gt;
&lt;br /&gt;
=ThreadPool=: háttér szálakat tárol.&lt;br /&gt;
* =ThreadPool.QueueUserWorkItem(threadMethod, parameter)=: meghív egy metódust új szálon&lt;br /&gt;
* =ThreadPool.UnsafeQueueUserWorkItem()=: -&amp;quot;-, de a context információt nem adja át&lt;br /&gt;
* =ThreadPool.RegisterWaitForSingleObject()=: &amp;lt;pre&amp;gt;WaitHandle&amp;lt;/pre&amp;gt;-höz lehet callback függvényt&lt;br /&gt;
	  regisztrálni&lt;br /&gt;
* =ThreadPool.[Get|Set][MinMax]Threads()=&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
static void WorkWithParameter(object state) {&lt;br /&gt;
	 // ...&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
WaitCallback workItem = new WaitCallback(WorkWithParameter);&lt;br /&gt;
ThreadPool.QueueUserWorkItem(workItem, &amp;quot;ThreadPooled&amp;quot;);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;SynchronizationContext&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
==SynchronizationContext==&lt;br /&gt;
&lt;br /&gt;
Üzenetkezelésre használják&lt;br /&gt;
* =SynchronizationContext.Current.Send()=: szinkron módon küld üzenetet&lt;br /&gt;
* =SynchronizationContext.Current.Post()=: aszinkron módon küld üzenetet&lt;br /&gt;
	  (a Windows Forms szálkezelési modell ezt nem támogatja, ott a =Post()= is szinkron módon működik)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;timer&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
==System.Threading.Timer==&lt;br /&gt;
&lt;br /&gt;
Ez az kernel szintű timer, a =System.Timers.Timer= és a =Windows.Forms.Timer= csak burkoló osztály. Pontossága: 55 ms&lt;br /&gt;
&lt;br /&gt;
Konstruktor paraméterei:&lt;br /&gt;
* =TimerCallback callback=&lt;br /&gt;
* callback függvény argumentuma&lt;br /&gt;
* =dueTime=: mennyi idő múlva hívja meg a callbacket először&lt;br /&gt;
* =interval=: mennyi időnként hívja meg a callbacket&lt;br /&gt;
* =Change(dueTime, interval)=: menet közben is megváltoztathatók az előbbi értékek. Leállítani úgy lehet, ha &amp;lt;pre&amp;gt;dueTime&amp;lt;/pre&amp;gt;-nak &amp;lt;pre&amp;gt;Timeout.Infinite&amp;lt;/pre&amp;gt;-et adunk meg.&lt;br /&gt;
&lt;br /&gt;
-- [[PallosPeter|Peti]] - 2007.06.27.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Valaszthato]]&lt;/div&gt;</summary>
		<author><name>Unknown user</name></author>
	</entry>
</feed>