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

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

  • 相关阅读:
    如何增加按钮的点击间隔时间
    如何增加button的点击范围
    定时器Timer的使用
    NSCache
    GCD和NSOperation的区别
    NSOperation实现线程间通信
    NSOperation添加操作依赖和监听
    自定义NSOperation
    NSOperation的多线程
    单例的实现(完整版代码)
  • 原文地址:https://www.cnblogs.com/hpze2000/p/3559296.html
Copyright © 2011-2022 走看看