微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

C# BackgroundWorker 的使用、封装

示例代码

PT_USER_INFO user = new PT_USER_INFO();
IList<TES_COMBAT_TASK> taskList = new List<TES_COMBAT_TASK>();

BackgroundWorker worker =  BackgroundWorker();
worker.DoWork += (s,e) =>
{
    user = HI.Get<Cache.ICacheService>().UserCache.GetCurrentUserInfo();
    taskList = HI.Get<ITaskService>().GetCombatTaskByUserIDUnfinished(user.ID.ToString());

};
worker.RunWorkerCompleted += (s,1)">
{
    try
    {
        taskListView.ItemsSource = taskList;
    }
    catch { }
};
worker.RunWorkerAsync();
View Code

BackgroundWorker封装:

using System;
 System.Collections.Generic;
 System.ComponentModel;
 System.Linq;
 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 name="errorAction">错误处理</param>
        static void Run(Action doWork,Action workCompleted,Action<Exception> errorAction)
        {
            bool isDoWorkError = false;
            Exception doWorkException = null;
            BackgroundWorker worker =  BackgroundWorker();
            worker.DoWork += (s,1)">
            {
                
                {
                    if (doWork != ) doWork();
                }
                 (Exception ex)
                {
                    isDoWorkError = true;
                    doWorkException = ex;
                }
            };
            worker.RunWorkerCompleted += (s,1)">if (!isDoWorkError)
                {
                    
                    {
                        if (workCompleted != ) workCompleted();
                    }
                     (Exception ex)
                    {
                        if (errorAction != ) errorAction(ex);
                    }
                }
                else) errorAction(doWorkException);
                }
            };
            worker.RunWorkerAsync();
        }

    }
}
View Code

 

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐