You are on page 1of 3

Thread trong C#

ng bi : Hoi Nng4/18/2014
thuvienwinform - Thread cho php thc hin cng lc nhiu cng vic song song vi nhau
m khng b , lag (lc :D), gin on. N c bit quan trng trong lp trnh mng, cc
ng dng i hi thc hin cng vic nng nhc, duyt vng lp ln (lp vi trm nghn ln
nh duyt cc th mc), nu khng dng thread th chng trnh s khng th tng tc
c, c th ri vo trng thi khng phn hi (Not Responding - Ci ny quen quen). Nh
c Thread m ng dng tr nn mt hn, hn ch , lag, s dng CPU hiu qu hn
vi lp trnh winform.

- s dng thread ta khai bo using System.Threading;


- S thread ti a cho 1 chng trnh:
+ Vi .NET2.0 l 25.
+ Vi .NET3.5 l 250.
+ Vi .NET4.0 (32bit) l 1023.
+ Vi .NET4.0 (64bit) l 32768.
+...
1/ To thread mi chy 1 hm, th tc

- Cho hm, th tc khng c tham s truyn vo


Copy code In ?

1.

Thread t1;

2.

t1 = new Thread(ThuTuc1);

vi ThuTuc1 l mt th tc (void) khng c tham s truyn vo


Cc v d di y s dng thread t1 ny l v d
- Cho hm, th tc c tham s truyn vo (S dng Lambda Expresstion)
Copy code In ?

1.

t1 = new Thread();

Copy code In ?

1.

t1 = new Thread((ThreadStart) =>

2.

3.

ThuTuc2("Truyen vao");

4.

});

2/ Chy thread

- Sau khi ta c thread ri ta c th cho n bt u chy:


Copy code In ?

1.

t1.Start();

3/ Dng thread
Copy code In ?

1.

t1.Abort();

4/ Tm dng thread
Copy code In ?

1.

t1.Suspend();

Tm dng cho n khi


Copy code In ?

1.

t1.Resume();

(Thread Priority)
- Khi s dng nhiu thread th ta ci t u tin thc thi ca cc thread
5/ Mc u tin ca thread

Copy code In ?

1.

t1.Priority = ThreadPriority.Lowest;

- C cc gi mc u tin: Lowest, BelowNormal, Normal, AboveNormal, Hightest


6/ Join

- Ci ny n s lm nh sau: Nhng thread di cu lnh Join() s c start sau khi cc


thread trn cu lnh join chy xong
7/ Thot chng trnh nhng thread vn chy

- Thread c 2 loi: ForeGround v BackGround.


+ Chng trnh s tt khi cc ForeGround thread chy xong
+ Cn cc BackGroud Thread s dng li khi tt chng trnh.
- L do l khi ta to 1 thread n mc nh l loi ForeGround
- khi tt chng trnh cc thread cng dng th ta s chuyn cc thread sang
BackGround nh sau:
Copy code In ?

1.

t1.IsBackground = true;

2.

t1.Start();

Chuyn thread thnh background trc khi start


8/ Thread Pooling

Ci ny hn rt rt nhiu. C th ni n ti u thread.
Thread Pooling mc nh l loi BackGround
Sau khi kt thc mt tc v n s tr v trng thi sn sng nhn mt nhim v mi
Chy mt th tc, hm bng Thread Pooling (th tc, hm phi c u vo l 1 Object)

Copy code In ?

1.

private void Button1_Click()

2.

3.

ThreadPool.QueueUserWorkItem(ThreadPooling, "Test");

4.

//Hoc: ThreadPool.QueueUserWorkItem(ThreadPooling);

5.

6.

private void ThreadPooling(object obj)

7.

8.

9.

MessageBox.Show(obj.ToString());

http://thuvienwinform.blogspot.com/2014/04/thread-trong-csharp.html

You might also like