封装起来 异步执行

winform 开发中 把耗时操作 封装起来 异步执行(.net 4.0)

 

.先定义一个 BackgroundTask.cs 代码如下:

复制代码
 1     public class BackgroundTask
 2     {
 3         private static WaitDialogForm LoadingDlgForm = null;
 4 
 5         public static void BackgroundWork(Action<object> action, object obj)
 6         {
 7             using (BackgroundWorker bw = new BackgroundWorker())
 8             {
 9                 bw.RunWorkerCompleted += (s, e) => 
10                 { 
11                     LoadingDlgForm.Close(); 
12                     LoadingDlgForm.Dispose(); 
13                 };
14 
15                 bw.DoWork += (s, e) =>
16                 {
17                     try
18                     {
19                         Action<object> a = action;
20                         a.Invoke(obj);
21                     }
22                     catch { }
23                 };
24 
25                 bw.RunWorkerAsync();
26 
27                 LoadingDlgForm = new WaitDialogForm("正在加载中......", "信息提示");
28             }
29         }
30     }
复制代码

然后再需要加载耗时操作的地方,调用该类

大概如下:

  

复制代码
        private void loadData()
        {
            BackgroundTask.BackgroundWork(getData, null);
        }

        private void getData(object obj)
        {
            //这里执行耗时操作 的代码 譬如,加载远程数据之类,还有绑定数据到UI,比如this.gridview.datasource = 之类的操作
        }
复制代码

这样就非常方便调用了, 不知道有没有什么不当之处。望大家指导。

 
 
分类: .netwinform
原文地址:https://www.cnblogs.com/Leo_wl/p/3560300.html