HyperLink
Bejelentkezés
E-mail: 
Jelszó: 





Skip Navigation Links
 

Több szálon futó alkalmazás fejlesztése


Példaprogram letöltése

7746 bájt

Mellékelt cikkben arra keressük a választ, hogy miként hozhatunk létre alkalmazásunkon belül egy-egy feladat elvégzésére egy külön szálon futó folyamatot.

A példa egyszerűségének kedvéért a következőt valósítjuk meg: készítünk egy olyan szálat melynek az a feladata, hogy egy Int64 típusú változó értékét növelje egyesével. Mivel ez a feladat egy külön szálon fut, így alkalmazásunk eközben bármi egyébbel foglalkozhat, olyan mintha ezt a feladatot nem is a mi alkalmazásunk hajtaná végre.
Új szál létrehozásához a Thread osztály alkalmazása szükséges. Ebből kell létrehoznunk egy új példányt. Létrehozáskor a konstruktor paramétereként egy ThreadStart osztály példányát kell átadnunk. Ezen osztály konstruktorában pedig megadhatunk egy olyan függvényt, melyet a szál indításakor futtatni kell.
      private static Thread th=new Thread(new ThreadStart(Function));
A mi esetünkben most a Function nevű függvény lesz az, melyet futtatni szeretnénk külön szálon, így ez lesz az, melyet átadunk a ThreadStart konstruktorának.
Ez a függvény egy végtelen ciklusban növeli az FCounter Int64 típusú változónk értékét. A függvény futását persze a szál lezárásával, illetve felfüggesztésével leállíthatjuk.
      private static Int64 FCounter = 0;
      public static void Function()
      {
        while (true)
        {
          FCounter++;
        }
      }
Ezek után a Function kódjának futtatásához az új szálát kell elindítanunk, melyet a Thread osztály Start függvényének hívásával tehetünk meg.
      protected void button1_Click (object sender, System.EventArgs e)
      {
        button1.Enabled = false;
        button2.Enabled = true;
        th.Start();
      }
A szál futásának megszakítására pedig az Abort függvény hívása szolgál.
      protected void button2_Click (object sender, System.EventArgs e)
      {
        button2.Enabled = false;
        th.Abort();
      }
Miközben az újonnan létrehozott szál fut, a számláló értéke folyamatosan növekszik. Ezt a le is kérdezhetjük a Button3 lenyomásával, mely az FCount változó aktuális értékét írja ki egy Label-re.
      protected void button3_Click (object sender, System.EventArgs e)
      {
        label1.Text = FCounter.ToString();
      }
A Thread osztályban arra is van lehetőségünk, hogy egy futó szálat ne megszüntessünk, hanem annak futását csak átmenetileg felfüggesszük. Ekkor a Suspend paraméter nélküli függvényt kell meghívnunk. Amikor pedig szeretnénk tovább futtatni a szálat, akkor a Resume függvény hívásával megtehetjük ezt.

Könyv
Ez a cikk megtalálható ebben a könyvben: C# Software Offline 2001 évkönyv 127. oldal

Felhasználási feltételek
A Software Online szoftverfejlesztői magazin mindegyik cikke, minden megjelent képe, és egyéb publikált anyaga szerzői jog védelme alatt áll! Bármilyen formában történő másodlagos terjesztésük, közzétételük vagy felhasználásuk kizárólag a kiadó előzetes írásbeli engedélyével történhet!

Copyright © 1999-2012 Animare Software Kft. Minden jog fenntartva!
| Készült: Animare Stúdió | Adatvédelem | Kapcsolat |