上色

Code Block

2013年7月6日 星期六

[VB.Net] ThreadStart與ParameterizedThreadStart

若要建立一個不含參數的執行緒(thread),使用ThreadStart這個委託函式即可;但是若要建立含有參數的執行緒,則須以ParameterizedThreadStart這個委託函式建立。

但是自.Net framework 2.0開始,只要方法不是overloading,compiler都會自行判斷要使用哪個方法建立執行緒,因此直接以一般方法建立即可,如︰
Dim thread1 As Thread = New Thread(AddressOf MyThread);
thread1.Start();

Dim thread2 As Thread = New Thread(New ThreadStart(AddressOf MyThread));
thread2.Start();

Dim thread3 As Thread = New Thread(AddressOf MyThreadWithParameter);
thread3.Start(myClass);

Dim thread4 As Thread = New Thread(New ParameterizedThreadStart(AddressOf MyThreadWithParameter));
thread4.Start(myClass);
以上四種方法都是可行的。

Reference:
http://www.cftea.com/c/2012/03/0ELGB9V327N8CCKT.asp

2013年7月4日 星期四

[VB.Net] Invoke and BeginInvoke

Control.Invoke︰強制於UI thread上執行委派,與原始thread同步
Control.BeginInvoke︰強制於UI thread上執行委派,與原始thread不同步

[delegate].Invoke︰在原來thread上同步執行委派
[delegate].BeginInvoke︰在一個新的背景thread上執行委派,與原始thread不同步