Thread _t = new Thread(new ThreadStart(reflesh)) _t.Start(); public void reflesh() { this.lable1.Reflesh(); }
你的意思是要把lablel.1传给Method操作吧可以这样 public class Method_class { private Label mLb; private string mUpdateText = ""; public string UpdateText { set{mUpdateText = value;} } public Method_class(Label lb) { mLb = lb } public void Method() { mLb.Text = mUpdateText } }
不同线程调用控件,为了控件安全,需要使用委托 Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click If ThreadPool.QueueUserWorkItem(New WaitCallback(AddressOf getItem), ti) Then Thread.Sleep(1000) Me.Text = "123" End If end sub Sub getItem(ByVal str1 As Object) Dim ti As TaskInfo = CType(str1, TaskInfo) BeginInvoke(New EventHandler(AddressOf addMsg), "abc") End Sub Sub addMsg(ByVal sender As Object, ByVal e As System.EventArgs) TextBox1.Text = sender.ToString End Sub 注意,委托不能用于shared声明的方法中,如果上述sub getitem及addmsg声明为shared sub 则不能成功进行委托另,如果只是简单调用,你人工判断觉得调用安全的(比如只有一个线程对控件进行赋值)懒得写这些代码可以在在对控件赋值之前执行这样一句代码,将线程安全的判断关闭: CheckForIllegalCrossThreadCalls = False 这代码你放在formload或者main事件中执行,反正在赋值之前调用就OK了
_t.Start();
public void reflesh()
{
this.lable1.Reflesh();
}
public class Method_class
{
private Label mLb;
private string mUpdateText = ""; public string UpdateText
{
set{mUpdateText = value;}
}
public Method_class(Label lb)
{
mLb = lb
} public void Method()
{
mLb.Text = mUpdateText
}
}
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
If ThreadPool.QueueUserWorkItem(New WaitCallback(AddressOf getItem), ti) Then
Thread.Sleep(1000)
Me.Text = "123"
End If
end sub
Sub getItem(ByVal str1 As Object)
Dim ti As TaskInfo = CType(str1, TaskInfo)
BeginInvoke(New EventHandler(AddressOf addMsg), "abc")
End Sub
Sub addMsg(ByVal sender As Object, ByVal e As System.EventArgs)
TextBox1.Text = sender.ToString
End Sub
注意,委托不能用于shared声明的方法中,如果上述sub getitem及addmsg声明为shared sub 则不能成功进行委托另,如果只是简单调用,你人工判断觉得调用安全的(比如只有一个线程对控件进行赋值)懒得写这些代码可以在在对控件赋值之前执行这样一句代码,将线程安全的判断关闭:
CheckForIllegalCrossThreadCalls = False
这代码你放在formload或者main事件中执行,反正在赋值之前调用就OK了