跨线程访问控件

InvokeRequired

this.textBox.InvokeRequired // 如果调用控件的线程和创建创建控件的线程不是同一个则为True
// 定义一个全局代理
private delegate void ShowVCodeInfoDelegate();
private void waitForVCode()
{
      Console.WriteLine("进入waitForVCode");
      if (this.webBrowser.InvokeRequired)   // 如果调用控件的线程和创建创建控件的线程不是同一个则为True
      {
            ShowVCodeInfoDelegate dlg = new ShowVCodeInfoDelegate(waitForVCode);
        this.Invoke(dlg);
      }
      else        // 调用控件的线程和创建创建控件的线程是同一个, 不存在跨线程访问控件的问题
      {
          printVCodeInfo();
      }
}
private void printVCodeInfo()
{
      Console.WriteLine("vcode info.");
}

最后更新于

这有帮助吗?