如果主线程是UI线程,使用InvokeRequired和Invoke就可以了。

解决方案 »

  1.   

    辅线程收到一些数据以后,因该通知相关事件订阅者,但不应该指使订阅者具体如何去做。UI线程可以这么做:class Form1 : Form
    {
        B b = new B();
        void On_Form1_Load()
        {
             b.DataRecived += this.OnDataReceived();
             b.Start();
        }
       void OnDataReceived(object sender, DataEventArgs e)
       {
             string message = e.Data; 
             this.BeginInvoke(() => 
             {
                   this.messageTextbox.Text = message;   // 运行在UI线程
             });
       }
    }
      

  2.   

    你是不是需要用主线程那个里的变量啊,你可以再你的辅线程里 做一个 主线程那个类的变量,new这个辅线程的类时主线程把自己给传过去,辅线程可以用主线程对象点出来的方法运行。    class Main
        {
            void Fun()
            {
                Helper helper = new Helper();
                helper.caller = this;
                new Thread(new ThreadStart(helper.helperFun)).Start();
            }
            public void CommonFun()
            {        }
        }
        class Helper
        {
            public Main caller;
            public void helperFun()
            {
                caller.CommonFun();
            }
        }