WebElektronika

Bevezetés a szálak használatába C# nyelv segítségével

person access_time 2017.05.18.
Áttekintjük most a szálkezelés alapjait. Az eddig bemutatott C# alkalmazások egy főszálat alkalmaztak, azaz, ha például meghívtunk egy metódust a "főszálból", addig a programunk "állt", hiszen a vezérlést a metódusunk kapta meg, ő használta a "főszálat".


Indítsuk el a Visual Studio-t és hozzunk létre egy Console alkalmazást, amelynek a neve legyen "ConsoleSzalak2" (1. ábra).

kep
1. ábra   Projekt létrehozása
 

Ahhoz, hogy a szálakat létre tudjunk hozni, illetve menedzselni, szükségünk van a "System.Threading" szerelvényre, vegyük ezt fel a projektünkbe (2. ábra).

kep
2. ábra   A System.Threading szerelvény hozzáadása a projektünkhöz
 

Másoljuk be a Program.cs file-ba a következő programot. A Main() metódus első sorában az aktuális szálnak (ez a főszálunk, nem készítünk itt még újat) adunk egy nevet. A szálnak tehát nem csak ID-ja lesz, hanem neve is.
Ezután kiírjuk a képernyőre a szálnak az ID-ját, és egyéb tulajdonságát is, például azt, hogy él-e a szál, háttérszál-e, de még a prioritását is.

class Program
    {
        static void Main(string[] args)
        {
            Thread.CurrentThread.Name = "WebElektronika";

            Console.WriteLine("Alkalmazás szálja : {0} ", Thread.CurrentThread.ManagedThreadId);
            Console.WriteLine("Szál CC-je : {0} ", Thread.CurrentThread.CurrentCulture);
            Console.WriteLine("Szál CC-jének a neve : {0} ", Thread.CurrentThread.CurrentCulture.DisplayName);
            Console.WriteLine("Él a szál? : {0} ", Thread.CurrentThread.IsAlive);
            Console.WriteLine("Háttérszál? : {0} ", Thread.CurrentThread.IsBackground);
            Console.WriteLine("Szál neve : {0} ", Thread.CurrentThread.Name);
            Console.WriteLine("Szál prioritása : {0} ", Thread.CurrentThread.Priority);
            Console.WriteLine("Szál állapota : {0} ",Thread.CurrentThread.ThreadState);

            Console.WriteLine("\nElindítjuk a notepad-et");

            Process process = Process.Start("notepad.exe");
            Thread.Sleep(4000);
            process.Kill();
            Console.WriteLine("Bezártuk a notepad-et");
            Console.ReadLine();
        }
    }

 

A szál néhány tulajdonságának a kiíratása után létrehozunk egy process-t, amelynek segítségével 4 másodpercre megjelenítjük a notepad alaklmazást (3. ábra).

kep
3. ábra   Futási eredmény, a főszálunk különböző adataival
 


Ha érdeklődik a cikk teljes tartalma után, kérjük, lépjen be a WebElektronika oldalára.

     Köszönjük.