在该类中定义一个public的属性为Label
然后实例化该类后给此属性赋值
或者使用委托在线程中抛出事件外面来接收修改Label的时候使用Invoke

解决方案 »

  1.   

    Thread _t = new Thread(new ThreadStart(reflesh))
    _t.Start();
    public void reflesh()
    {
    this.lable1.Reflesh();
    }
      

  2.   

    你的意思是要把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
       }
    }
      

  3.   

    不同线程调用控件,为了控件安全,需要使用委托
    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了
      

  4.   

    第2项new Thread(new ThreadStart(Fun),好像可以传一个object数组进取的说