zoukankan      html  css  js  c++  java
  • C# BackgroundWorker 的使用、封装

    示例代码:

    PT_USER_INFO user = new PT_USER_INFO();
    IList<TES_COMBAT_TASK> taskList = new List<TES_COMBAT_TASK>();
    
    BackgroundWorker worker = new BackgroundWorker();
    worker.DoWork += (s, e) =>
    {
        user = HI.Get<Cache.ICacheService>().UserCache.GetCurrentUserInfo();
        taskList = HI.Get<ITaskService>().GetCombatTaskByUserIDUnfinished(user.ID.ToString());
    
    };
    worker.RunWorkerCompleted += (s, e) =>
    {
        try
        {
            taskListView.ItemsSource = taskList;
        }
        catch { }
    };
    worker.RunWorkerAsync();
    View Code

    BackgroundWorker封装:

    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Linq;
    using System.Text;
    
    /**
     * 使用方法:
    
    BackWork.Run(() => //DoWork
    {
    
    }, () => //RunWorkerCompleted
    {
    
    }, (ex) => //错误处理
    {
    
    });
     
    */
    
    namespace Utils
    {
        /// <summary>
        /// BackgroundWorker封装
        /// 用于简化代码
        /// </summary>
        public class BackWork
        {
            /// <summary>
            /// 执行
            /// </summary>
            /// <param name="doWork">DoWork</param>
            /// <param name="workCompleted">RunWorkerCompleted</param>
            /// <param name="errorAction">错误处理</param>
            public static void Run(Action doWork, Action workCompleted, Action<Exception> errorAction)
            {
                bool isDoWorkError = false;
                Exception doWorkException = null;
                BackgroundWorker worker = new BackgroundWorker();
                worker.DoWork += (s, e) =>
                {
                    try
                    {
                        if (doWork != null) doWork();
                    }
                    catch (Exception ex)
                    {
                        isDoWorkError = true;
                        doWorkException = ex;
                    }
                };
                worker.RunWorkerCompleted += (s, e) =>
                {
                    if (!isDoWorkError)
                    {
                        try
                        {
                            if (workCompleted != null) workCompleted();
                        }
                        catch (Exception ex)
                        {
                            if (errorAction != null) errorAction(ex);
                        }
                    }
                    else
                    {
                        if (errorAction != null) errorAction(doWorkException);
                    }
                };
                worker.RunWorkerAsync();
            }
    
        }
    }
    View Code
  • 相关阅读:
    td-agent 收集日志到kafka的配置
    ctrl+z 以后怎么恢复挂起的进程
    LCD显示GPS时钟[嵌入式系统]
    树莓派轮盘游戏机[嵌入式系统]
    集成测试工具
    未上线的界面
    前端网页内复杂编辑
    用jquery编写的分页插件
    用jquery编写的tab插件
    EAA脚本语言0.2
  • 原文地址:https://www.cnblogs.com/s0611163/p/7080127.html
Copyright © 2011-2022 走看看