如何在子线程中操作主线程的控件

  一般来说,直接在子线程中对窗体上的控件操作是会出现异常,这是由于子线程和运行窗体的线程是不同的空间,因此想要在子线程来操作窗体上的控件,是不可能简单的通过控件对象名来操作,但不是说不能进行操作,微软提供了Invoke的方法,其作用就是让子线程告诉窗体线程来完成相应的控件操作。

        /// <summary>
          /// 修改UI线程创建控件属性的委托
          /// </summary>
          delegate void SetTextCallback(string text);

          private void SetText(string text)
          {
              if (this.Msg.InvokeRequired)
              {
                  SetTextCallback d = new SetTextCallback(SetText);
                  this.Invoke(d, new object[] { text });
              }
              else
              {
                  this.Msg.Text = text;
              }
          }

原文地址:https://www.cnblogs.com/cuihongyu3503319/p/1564627.html