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.