Megosztás a következőn keresztül:


Szálak és szálkezelés használata

A .NET használatával olyan alkalmazásokat írhat, amelyek egyszerre több műveletet hajtanak végre. Olyan műveletek, amelyek késleltethetik más műveletek végrehajtását, külön szálakon hajthatók végre, ezt többszálas vagy szabad szálkezelésnek nevezik.

A többszálas használatot használó alkalmazások jobban reagálnak a felhasználói bevitelre, mivel a felhasználói felület aktív marad, mivel a processzorigényes feladatok külön szálon hajtanak végre. A többszálas skálázható alkalmazások létrehozásakor is hasznos, mert a számítási feladatok növekedésével szálakat adhat hozzá.

Megjegyzés:

Ha jobban szabályoznia kell az alkalmazás szálainak viselkedését, saját maga kezelheti a szálakat. A többszálú programozás azonban jelentősen leegyszerűsíthető a System.Threading.Tasks.Parallel és System.Threading.Tasks.Task osztályok, a párhuzamos LINQ (PLINQ), a System.Collections.Concurrent névtér egyidejű gyűjteményosztályai, valamint a feladatok fogalmán alapuló programozási modell segítségével, szálak helyett. További információ: Párhuzamos programozás és feladat párhuzamos kódtára (TPL).

Útmutató: Új szál létrehozása és indítása

Új szálat az osztály új példányának System.Threading.Thread létrehozásával hozhat létre. Adja meg annak a metódusnak a nevét, amelyet az új szálon végre szeretne hajtani a konstruktornak. A létrehozott szál elindításához hívja meg a metódust Thread.Start . További információkért és példákért tekintse meg a Szálak létrehozása és az adatok továbbítása a kezdési időpontban című cikket és az API-referenciát Thread .

Útmutató: A szál leállítása

A szál végrehajtásának leállításához használja a következőt System.Threading.CancellationToken: . Egységes módot biztosít a szálak együttműködő leállítására. További információ: Lemondás felügyelt szálakban.

Előfordulhat, hogy nem lehet egy szálat együttműködő módon leállítani, mert olyan külső kódot futtat, amelyet nem kooperatív lemondásra terveztek. Ebben az esetben előfordulhat, hogy kényszerítve szeretné megszüntetni a végrehajtást. A szál végrehajtásának kényszerített leállításához a .NET-keretrendszerben használhatja a metódust Thread.Abort . A metódus egy ThreadAbortException-t indít el azon a szálon, amelyen meghívják. További információ: Szálak megsemmisítése. A Thread.Abort metódus nem támogatott a .NET Core-ban. Ha a .NET Core-ban kényszeríteni kell a külső kód végrehajtásának leállítására, futtassa azt egy külön folyamatban, és használja a Process.Kill metódust.

A System.Threading.CancellationToken .NET-keretrendszer 4 előtt nem érhető el. Ha le szeretne állítani egy szálat a régebbi .NET-keretrendszer-verziókban, használja a szálszinkronizálási technikákat a kooperatív törlés manuális implementálásához. Létrehozhat például egy illékony logikai mezőt shouldStop, és használhatja arra, hogy leállítást kérjen a szál által végrehajtott kód számára. További információért lásd a volatile kulcsszót a C# referencia és a System.Threading.Volatile részben.

Ezzel a Thread.Join módszerrel a hívószálnak meg kell várnia a leállítandó szál befejezését.

Útmutató: Egy szál szüneteltetése vagy megszakítása

A metódussal Thread.Sleep egy adott ideig szüneteltetheti az aktuális szálat. A Thread.Interrupt metódus meghívásával megszakíthat egy blokkolt szálat. További információ: Szálak szüneteltetése és megszakítása.

Szál tulajdonságai

Az alábbi táblázat néhány tulajdonságot Thread mutat be:

Ingatlan Leírás
IsAlive Akkor adja vissza true, ha egy szál elindult, és még nem fejeződött be normál módon vagy szakadt meg.
IsBackground Lekéri vagy beállít egy logikai értéket, amely azt jelzi, hogy egy szál háttérszál-e. A háttérszálak olyanok, mint az előtérszálak. A háttérszál azonban nem akadályozza meg a folyamat leállítását. Miután a folyamathoz tartozó összes előtérszál leállt, a közös nyelvi futtatókörnyezet befejezi a folyamatot úgy, hogy meghívja a metódust a Abort még élő háttérszálakra. További információ: Előtér- és háttérszálak.
Name Egy szál nevének lekérése vagy beállítása. Leggyakrabban az egyes szálak felderítésére használják hibakereséskor.
Priority Lekéri vagy beállítja azt az értéket ThreadPriority, amelyet az operációs rendszer a szálütemezés rangsorolásához használ. További információ: Ütemezési szálak és hivatkozás ThreadPriority .
ThreadState Lekéri a ThreadState szál aktuális állapotát tartalmazó értéket.

Lásd még