Net Core教程

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

本文主要是介绍C#常用工具类,如何优雅的使用多线程以及优雅的跨线程的解决方案,解决“线程间操作无效: 从不是创建控件“”的线程访问它。”,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

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

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

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

  //跨线程代码块
  cross.Invoke(delegate
  {
    uiDataGridView1.DataSource = types;
    uiDataGridView1.Refresh();
  });
});
你只需要创建如下工具类:
public static class TaskEx
{
  /// <summary>
  /// 启动多线程
  /// </summary>
  public static void TaskRun(this System.Windows.Forms.Control ctrl, Action<Action<Action>> action)
  {
    System.Threading.ThreadPool.QueueUserWorkItem(delegate 
    {
      action.Invoke(b => ctrl.Invoke(b));
    });
  }
}
这篇关于C#常用工具类,如何优雅的使用多线程以及优雅的跨线程的解决方案,解决“线程间操作无效: 从不是创建控件“”的线程访问它。”的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!