示例代码:

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

转载于:https://www.cnblogs.com/s0611163/p/7080127.html

C# BackgroundWorker 的使用、封装相关推荐

  1. 封装BackgroundWorker控件(提供源代码下载,F5即可见效果)

    Demo源码 背景 经常做些小程序或者小DEMO的时候会用到异步,多线程来执行一些比较耗时的工作同时将进度及时进行反馈.我通常会使用位于[ System.ComponentModel]命名空间下的Ba ...

  2. c# BackgroundWorker组件介绍(属性、方法、事件)

    c# BackgroundWorker组件介绍(属性.方法.事件) 2008-07-03 16:28 在VS2005中添加了BackgroundWorker组件,该组件在多线程编程方面使用起来非常方便 ...

  3. 稳扎稳打Silverlight(25) - 2.0线程之Thread, Timer, BackgroundWorker, ThreadPool

    [索引页] [源码下载] 稳扎稳打Silverlight(25) - 2.0线程之Thread, Timer, BackgroundWorker, ThreadPool 作者:webabcd 介绍 S ...

  4. zz backgroundworker C#

    程序代码 BackgroundWorker组件 在VS2005中添加了BackgroundWorker组件,该组件在多线程编程方面使用起来非常方便,然而在开始时由于没有搞清楚它的使用机制,走了不少的弯 ...

  5. 关于net2.0里面新出现的类backgroundworker的应用

    这是一个在.net2.0里面新出现的类,用于执行后台比较长的任务而又想能和UI有点操作的应用里面. 普通情况下,你点击一个按钮,去后台执行一个process,如果你想得到结果,就得等这个process ...

  6. Backgroundworker与Thread的区别

    最近项目要用到,窗体Form程序要在后台开启几个子线程,负责和其他端进行通信,异步读写,并且来更改UI.在网上查了有Backgroundworker与Thread两种方法. 1.Backgroundw ...

  7. 关于net2.0里面新出现的一个异步处理类backgroundworker

    这是一个在.net2.0里面新出现的类,用于执行后台比较长的任务而又想能和UI有点操作的应用里面. 在研究一个桌面应用程序的时候,看到了backgroundworker 这个类下面是从网上摘要的该类用 ...

  8. IDEA中将代码块封装为方法,IDEA代码重构快捷键

    IDEA中将代码块封装为方法 选中要转换的代码块,快捷键: Windows快捷键:Alt + Shift + M Mac快捷键:Alt + Command + M 如图:

  9. 2022-2028年中国封装用胶膜行业运营现状及投资发展潜力报告

    [报告类型]产业研究 [出版时间]即时更新(交付时间约3个工作日) [发布机构]智研瞻产业研究院 [报告格式]PDF版 本报告介绍了封装用胶膜行业相关概述.中国封装用胶膜行业运行环境.分析了中国封装用 ...

最新文章

  1. 2017-2018 ACM-ICPC German Collegiate Programming Contest (GCPC 2017)
  2. python jenkins库 api简介
  3. SecureCRT快捷键
  4. Leetcode 96. 不同的二叉搜索树 解题思路及C++实现
  5. 模板:Prufer序列
  6. c/c++ 友元基本概念
  7. 捋一捋20201217
  8. Appium swipe之屏幕上、下、左、右滑动
  9. MVC控制器执行重定向
  10. 使用sp_executesql存储过程执行动态SQL查询
  11. java取set中的元素个数_java中的Set的使用以及各种遍历方法(较为全面)
  12. 机器视觉硬件选型——镜头选型
  13. 积累分布用例-洛伦兹曲线和随机游走
  14. T检验、卡方检验、F检验
  15. Implementing Infinite Scroll Into a React Component
  16. java word转图片(word转pdf再转图片)
  17. matlab特征值归一化,如何用matlab将特征向量归一化呢?
  18. 基于JAVA网上图书销售系统计算机毕业设计源码+系统+mysql数据库+lw文档+部署
  19. linux下oled显示设计,OLED显示问题
  20. 并发编程:我对Java并发编程的总结和思考

热门文章

  1. XCode中修改应用的名字
  2. java方法区超详细汇总,方法区到底是干什么用的?不懂方法区不能说了解jvm!
  3. 只知道java有反射可以说是动态语言,动态链接,早期晚期绑定、虚方法这些概念你知道吗
  4. 熟读《阿里巴巴java开发手册》(三、单元测试,四、安全规约)
  5. 软件需求说明的前世和今生
  6. Flutter:如何使用 CustomPaint 绘制心形
  7. 跨域产生的原因和解决方法_幼儿语言障碍产生的原因及其解决方法
  8. Android跑马灯
  9. mysql root 无法建立数据库_MySQL - 在root用户下你跟我说无法建表!?
  10. 报告解读丨基于消费者洞察的鞋服品牌数字化营销新思路