marți, 7 decembrie 2010

Fire de executie (Threads) in .NET

Fire de executie (Threads) in .NET Micro Framework

Cu ce ne ajuta?
Procesoarele executa o singura instructiune la un moment dat. Cu toate acestea, atunci cand lucram pe un PC, ni se pare ca mai multe programe sunt rulate in acelasi timp. De fapt, fiecare program se executa un timp foarte scurt, dupa care se trece la urmatorul program, apoi la urmatorul s.a.m.d.
Folosind thread-urile din .NET Micro Framework putem amana (delay) anumite instructiuni, putem executa periodic o verificare sau o alta actiune, putem scrie pe un card SD si, in acest timp, putem face alte lucruri mai urgente.

Cum facem asta din C#?
Vestea buna este ca avem deja un thread principal in orice program! Metoda Main a programului este executata intr-un thread, astfel incat putem utiliza direct delay-uri (sleep).

using System;
using System.Threading;

using Microsoft.SPOT;
using Microsoft.SPOT.Hardware;

namespace FEZ_Panda_Application1
{
public class Program
{
public static void Main()
{
while (true)
{
Debug.Print("La culcare pentru o secunda ;-)");
Thread.Sleep(1000);
}
}
}
}


Programului va afisa, din secunda in secunda, textul:
La culcare pentru o secunda ;-)
La culcare pentru o secunda ;-)
La culcare pentru o secunda ;-)
.....

Un alt thread
Avem o instructiune care se executa la fiecare secunda... complicam un pic treaba si mai facem un thread, care sa se execute din 5 in 5 secunde.

using System;
using System.Threading;

using Microsoft.SPOT;
using Microsoft.SPOT.Hardware;

namespace FEZ_Panda_Application1
{
public class Program
{
public static void ThreadLa5Secunde()
{
while (true)
{
Debug.Print("Din 5 in 5 secunde...");
Thread.Sleep(5000);
}
}
public static void Main()
{
Thread UnAltThread;
UnAltThread = new Thread(ThreadLa5Secunde);
UnAltThread.Start();

while (true)
{
Debug.Print("Din secunda in secunda...");
Thread.Sleep(1000);
}
}
}
}

Iesirea programului:
Din 5 in 5 secunde...
Din secunda in secunda...
Din secunda in secunda...
Din secunda in secunda...
Din secunda in secunda...
Din secunda in secunda...
Din 5 in 5 secunde...
Din secunda in secunda...
Din secunda in secunda...
Din secunda in secunda...
Din secunda in secunda...


Subiectul este extrem de vast, mai multe informatii (nu si despre Micro Framework, dar sunt bune) gasiti la:
Despre fire de executie in c# (threads)
Threading in C# - documentatie online si PDF de descarcat.

Niciun comentariu:

Trimiteți un comentariu