費話不多說,下面的例子講的是如何在vb.Net2005中使用多線程訪問窗體上的用戶控件.請看代碼:
'///////////------王晶波-------///////////'
'-本例子由王晶波編寫
'主要在多線程程序中實現在線程中訪問窗體上的用戶控件
'希望對初學者有所幫助,高手請不要笑話!!!!!
'//////////-----特此聲明------///////////
Imports System.Threading
Public Class Form1
Delegate Sub SetText(ByVal text As String) '聲明一個委托
Dim i As Integer '定義一個變量,用來更新button2的text屬性
Private Sub Btn_text() '定義一個方法,通過這個方法調用btn_settext來改變button2的text屬性
Dim dh As SetText = New SetText(AddressOf Btn_SetText) '這句我也解釋不清是什麼意思,大家照著靈活一點用就是了。
Me.Invoke(dh, New Object() {CStr(i)}) '和上面那句一樣
End Sub
Private Sub Btn_SetText(ByVal str As String) '這個大家都可以理解了,給屬性賦值
Button2.Text = str
End Sub
Sub Add_text()
For i = 0 To 100
Btn_text()
System.Threading.Thread.Sleep(100)
Next
End Sub
Dim dh As System.Threading.Thread '定義一個窗體級線程
Private Sub Form1_FormClosed(ByVal sender As Object, ByVal e As System.Windows.Forms.FormClosedEventArgs) Handles Me.FormClosed
dh.Abort() '結束線程,否則點關閉按鈕後無法正常結束程序.
End Sub
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
dh = New System.Threading.Thread(AddressOf Add_text) '創建一個線程的實例
dh.Start() '開始運行線程
End Sub
End Class
以上代碼肯定可以運行,在網上找了好久也沒找到有關vb.net 是如何委托來實現改變控件屬性的,C#的倒是有一些,但是無法轉成VB.Net 來用,轉換時總會出來一些看不懂的東西,無法通過調試,希望這個例子能給初學多線程的朋友一些幫助,如果覺得有幫助,就留言,我也好高興一下!!!!!!