首页 > Windows开发 > 详细

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

时间:2014-02-22 12:09:29      阅读:480      评论:0      收藏:0      [点我收藏+]

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

bubuko.com,布布扣
 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     }
bubuko.com,布布扣

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

大概如下:

  

bubuko.com,布布扣
        private void loadData()
        {
            BackgroundTask.BackgroundWork(getData, null);
        }

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

 

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

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

原文:http://www.cnblogs.com/hpze2000/p/3559296.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!