C#常用工具类,如何优雅的使用多线程以及优雅的跨线程的解决方案,解决“线程间操作无效: 从不是创建控件“”的线程访问它。”

当你需要通过一个耗时操作获取到数据,并改变窗体或控件的显示时,该工具可以为你解决窗体假死,以及跨线程的问题。

解决System.InvalidOperationException:“线程间操作无效: 从不是创建控件“”的线程访问它。”

首先看看在我的项目中实际使用:
//多线程工具
this.TaskRun(cross =>
{
  //多线程代码,请求API
  List types = ApiRoutes.EmpApi.GetTypeList(out string msg);

  //跨线程代码块
  cross.Invoke(delegate
  {
    uiDataGridView1.DataSource = types;
    uiDataGridView1.Refresh();
  });
});
你只需要创建如下工具类:
public static class TaskEx
{
  /// 
  /// 启动多线程
  /// 
  public static void TaskRun(this System.Windows.Forms.Control ctrl, Action> action)
  {
    System.Threading.ThreadPool.QueueUserWorkItem(delegate 
    {
      action.Invoke(b => ctrl.Invoke(b));
    });
  }
}

你可能感兴趣的:(c#,线程,多线程,winform,工具类)