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
  • 相关阅读:
    把office文档转换为html过程中的一些坑
    JAVA运行时问题诊断-工具应用篇
    转:IT公司的十大内耗,别说你公司没有!
    安装storm的一些很乱的笔记
    航伴项目介绍
    centos7防火墙操作
    MySQL 截取字符串
    redis客户端介绍及php客户端的下载安装
    vscode 连接远程服务器 sftp
    redis主从复制
  • 原文地址:https://www.cnblogs.com/s0611163/p/7080127.html
Copyright © 2011-2022 走看看