.先定義一個 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 = 之類的操作 }
這樣就非常方便調用了, 不知道有沒有什么不當之處。望大家指導。
