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组件化]分发模块依赖倒置
- 下一篇: 韩国IT业是怎么走向国际我们须要学习什么