线程异步

普通的方法:

Thread th = new Thread(new ThreadStart(delegate()
{
  //要执行的异步方法
}));
th.Start();

但有时候异步去操作控件时会报错,提示主线程之外的线程操作控件,这时候可以这样写:

Thread th = new Thread(new ThreadStart(GetVideos));
th.Start();

//异步获取视频列表
private void GetVideos()

{  

  if (this.InvokeRequired)
  {
    MethodInvoker getvideo = delegate
    {
      //操作控件的地方,注意的是,这里只包含操作控件的地方就好,不用所有方法内容都包含,还有这里的内容和下面else里的是一样的
    };

    this.Invoke(getvideo);

  }
  else
  {
  }

}

这样就能解决异步操作主线程控件的问题了

原文地址:https://www.cnblogs.com/dachuang/p/6877345.html