C# BackgroundWorker 的使用、封装
生活随笔
收集整理的这篇文章主要介绍了
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 CodeBackgroundWorker封装:
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
转载于:https://www.cnblogs.com/s0611163/p/7080127.html
总结
以上是生活随笔为你收集整理的C# BackgroundWorker 的使用、封装的全部内容,希望文章能够帮你解决所遇到的问题。
- 上一篇: [Android组件化]分发模块依赖倒置
- 下一篇: c#的逆变和协变