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 = 之類的操作
        }

 

這樣就非常方便調用了, 不知道有沒有什么不當之處。望大家指導。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM