当你须要通过一个耗时操作获取到数据,并扭转窗体或控件的显示时,该工具能够为你解决窗体假死,以及跨线程的问题。
解决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)); }); }}