【WPF】【C#】使用BackgroundWorker实现多线程/异步操作

70 篇文章 4 订阅

做WPF时需要做一个异步加载时的Loading遮罩,搜Stackoverflow看到很多方法,看到了这个插件:
BusyIndicator in the extended WPF Toolkit

同时进一步学习了WPF中使用BackgroundWorker类异步操作的经典文章,赶紧Mark一下:

https://elegantcode.com/2011/10/07/extended-wpf-toolkitusing-the-busyindicator/
https://elegantcode.com/2009/07/03/wpf-multithreading-using-the-backgroundworker-and-reporting-the-progress-to-the-ui/

知其然,知其所以然。赶紧学习一下。 :)


2016.12.28更新:

选择用async/await特性,还是用BackgroundWorker类:

  • async/await更适合那些需要在后台完成的不相关的小任务,默默开始,默默结束。
  • BackgroundWorker适合在后台工作的同时要跟主线程通信的情况,如实时反馈工作进度,允许用户中途中断这个任务,任务完成后的回调等等。

2017.1.18更新:

想一想还是直接把最常用的关键部分贴出来比较方便:

private void DoSomething()
{
    BackgroundWorker worker = new BackgroundWorker();
    worker.DoWork += (o, ea) =>
    {
        Operation(); // 耗时操作
    };

    worker.RunWorkerCompleted += (o, ea) =>
    {
        // work has completed. you can now interact with the UI
        // 如隐藏前台Loading遮罩层
    };
    // 如显示前台Loading遮罩层

    worker.RunWorkerAsync();
}
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值