zoukankan      html  css  js  c++  java
  • 封装起来 异步执行

    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
  • 相关阅读:
    UIImageView变灰
    IOS 瀑布流
    IOS9适配 MARK
    MAC PHP MARK
    IOS第三方库 MARK
    IOS聊天对话界面
    UILabel自适应宽度的函数详解
    UIControl的使用
    IOS @2X.png
    自定义UIAlertView
  • 原文地址:https://www.cnblogs.com/Leo_wl/p/3560300.html
Copyright © 2011-2022 走看看