Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
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. |