首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

我该如何等待BackgroundWorker?

关于等待BackgroundWorker,以下是一些建议:

  1. 使用WaitForExit()方法:在BackgroundWorker对象上调用WaitForExit()方法,这将阻塞当前线程,直到BackgroundWorker线程完成其工作。
代码语言:csharp
复制
backgroundWorker.RunWorkerAsync();
backgroundWorker.WaitForExit();
  1. 使用AutoResetEvent:可以使用AutoResetEvent对象来等待BackgroundWorker线程完成其工作。
代码语言:csharp
复制
AutoResetEvent waitHandle = new AutoResetEvent(false);

backgroundWorker.RunWorkerCompleted += (sender, args) =>
{
    waitHandle.Set();
};

backgroundWorker.RunWorkerAsync();
waitHandle.WaitOne();
  1. 使用ManualResetEvent:与AutoResetEvent类似,可以使用ManualResetEvent对象来等待BackgroundWorker线程完成其工作。
代码语言:csharp
复制
ManualResetEvent waitHandle = new ManualResetEvent(false);

backgroundWorker.RunWorkerCompleted += (sender, args) =>
{
    waitHandle.Set();
};

backgroundWorker.RunWorkerAsync();
waitHandle.WaitOne();
  1. 使用Task:可以将BackgroundWorker线程封装为一个Task对象,并使用Task.Wait()方法等待其完成。
代码语言:csharp
复制
Task task = Task.Factory.StartNew(() =>
{
    backgroundWorker.RunWorkerAsync();
    while (backgroundWorker.IsBusy)
    {
        Thread.Sleep(100);
    }
});

task.Wait();

以上是一些可以用来等待BackgroundWorker线程完成其工作的方法,可以根据具体情况选择合适的方法。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

【C#】带等待窗体的BackgroundWorker

这里简单介绍一下,两个方案的共同目的都是在执行耗时任务时向用户显示一个模式窗体(等待窗体),通过窗体,任务可以向用户报告执行进度,用户也可以通过它干预任务的执行(也就是取消~如果任务允许被终止的话...为true,等待窗体会显示【取消】按钮,用户可以通过点击它发出终止任务的请求,你可以像老样子一样,在DoWork中访问CancellationPending获知请求 其余功能与bgw一致 使用示例:...BackgroundWorker。...总之根本问题就是,当某个窗体在非活动状态下弹出模式窗体,那个模式窗体就会不正常,要问如何才能在非活动状态弹出模式窗体,这个可以自己用timer实现。...而为什么会不正常,这个也想知道,还请高人解答 有关IWaitForm和WaitForm的请参看上一篇 -文毕-

1.7K30

MySql 锁等待如何处理?

及时获取有趣有料的技术文章 本文来源:http://u6.gg/sS6nB 这个问题相信大家对它并不陌生,但是有很多人对它产生的原因以及处理吃的不是特别透,很多情况都是交给DBA去定位和处理问题,接下来我们就针对这个问题来展开讨论...innodb_lock_wait_timeout:innodb的dml操作的行级锁的等待时间 lock_wait_timeout:数据结构ddl操作的锁的等待时间 如何查看innodb_lock_wait_timeout...SHOW VARIABLES LIKE 'innodb_lock_wait_timeout' 如何修改innode lock wait timeout的值?...下面介绍在遇到这类问题如何处理 问题现象 数据更新或新增后数据经常自动回滚。...导致资源被长期占用,其他事务在抢占资源时,因上一个事务的锁而导致抢占失败!

1.6K20

的历程谈谈如何学习

可是,做的不够好。 很多时候,会有一些刚毕业或刚入行的童鞋问我:老师,怎么学习webgis开发?也一直在思考这个问题,作为一个新人,应该如何学习webgis,降低webgis的学习成本。...对于如何学习,是一个很模糊也很难有标准答案的问题,因人而异,仁者见仁,智者见智。本文,从个人的学习路程上抛砖引玉的简单说说,希望有所启发,有所帮助。 首先,介绍下的专业背景。...刚毕业的前两年,一直处在两点一线(单位——宿舍)的状态,即使是周末,也依然会出现在办公室里面,一方面环境比宿舍稍微会好一点,另一方面,也比较能静下心来。其三,多请教。...这样,从cs变成了bs,又得重新学习了。这,一方面得理解业务,一方面还得coding实现业务。...在学习的同时,也将学习、总结的技术点什么的整理成博客,一方面为自己,一方面也方便他人。

75450

如何选择NVIDIA Jetson开发套件?

本文的重点就是介绍如何选择Jetson开发套件。...Python、OpenCV的学生/开发者; 从事K12教育工作人员 购买注意事项: NVIDIA出厂开发套件不包含 MicroSD卡,不包含电源;参考:填坑系列(2):除了Jetson Nano,原来还需要准备这些...开发套件规格: 也来给NVIDIA AGX Xavier开个箱 ? ?...对于以上三款产品,如果有人问如何扩展存储?请看这篇: 看一块SSD硬盘如何通吃所有NVIDIA Jetson平台 有人问:为啥没有Jetson TX2开发套件?...有几个视频还是建议看一下: 【GTC 2020】NVIDIA最“硬”核的讲座:如何设计Jetson NANO产品(中文字幕) 【GTC 2020】如何利用NVIDIA工具在边缘部署智能视觉APP(中文字幕

4.6K30

面试问到IOC如何回答呢?

这样想玩啥,游戏仓库直接给我就可以了。而IOC就是这个游戏仓库。...白话一下   原本呢,想玩游戏,必须要先去下载好游戏,等到安装完成以后,才能开始玩。...有了游戏仓库以后,只需要告诉它,玩啥游戏就可以了,它就会帮我下载并安装好游戏,等到我想玩的时候就能直接玩了。   原本呢,需要在Player内自己的去实例化Game的实现类。...至于Gta5是如何被实例化的Player完全不需要关心。 概括一下:就是主动创建对象过程变成了被动接收,编译期依赖变成了运行时依赖,从而达到了对象之间的松耦合。 为什么要使用IOC?好处在哪里?   ...是不一样的科技宅,每天进步一点点,体验不一样的生活。我们下期见!

74865

6搞懂线程池(二)

抱歉各位多线程专栏托更这么久,这篇文章我们继续讲线程池的相关知识,其中将涉及到如下知识: 取消异步操作 等待事件处理器及超时 计时器 BackgroundWorker 零、取消异步操作 这一小节将引入两个类...如果属性为 true ,则说明操作需要被取消,我们必须放弃操作。...它允许我们把回调函数放入线程池,每当等待事件处理器收到信号或者等待超时时将执行这个回调函数。下面的代码通过模拟初始等待下单做饭,到了下班时间(超时)后就停止接单。...所以如果提供 7 秒的超时时间是可行的,操作会顺利完成。在有大量线程处于阻塞状态等待线程事件信号时这种方式非常有用。 二、计时器 我们前面所讲的都是一次性调用,那么如何进行周期性调用呢?...在方法中可以知道操作是成功完成、发生错误或被取消。BackgroundWorker 主要用于 WPF 中,通过后台工作事件处理器代码可以直接与 UI 控制器交互。

47310

老师纳闷:数据分析的结果如何落地?

有同学问:“有个一个很好的分析发现,问题是如何让它落地呢?”还有同学抱怨,感觉发出去的数据分析报告都不见结果。要如何推动数据分析落地?一图以蔽之,推动方式和推动难度,完全取决于“”是谁 ?...现实工作中,管理流程和汇报关系,会卡死很多创意想法,这是个无奈的事实 如果是大老板推动,当然是“想做XX,要做XX”然后叫上数据、业务部门的领导过来分配任务。...比如 没有数据部门 有数据部门但能力不够 数据部门有能力但睁眼瞎(“搞什么销售跟踪,一点技术含量都没有,别打扰搞算法”“数据分析就是写sql,你想做啥自己提需求,提不清楚不做”) 数据部门有能力但势利眼...(“你看业务部的需求都还没做完,你们一个小小的会员中心算老几,一边等着去”) 数据部门有能力但没精力(“就这两杆枪,实在搞不过来”) ╮(╯﹏╰)╭ 这时候业务部门就得自己想办法。

59341

面试官问我:什么是JavaScript闭包,如何回答?

这个问题在面试的时候经常都会被问,很多小白一听就懵逼了,不知道如何回答好。 这个问题也有很多朋友在公众号给李老师留言了,问题表达方式不一样,都是终归到一点,就是对闭包没有很清晰的理解。...个人认为,理解闭包的关键在于:外部函数调用之后其变量对象本应该被销毁,但闭包的存在使我们仍然可以访问外部函数的变量对象,这就是闭包的重要概念。...在职前端开发,如果你也想学习前端开发技术,可以加入组建的前端 学习交流裙:851 231 348 也可以关注的微信公众号: 【前端留学生】自己根据多年来的开发经验总结录制的一套web前端精讲视频 和学习方法...内存泄漏 闭包会引用包含函数的整个变量对象,如果闭包的作用域链中保存着一个HTML元素,那么就意味着元素无法被销毁。所以我们有必要在对这个元素操作完之后主动销毁。...函数内部的定时器 当函数内部的定时器引用了外部函数的变量对象时,变量对象不会被销毁。 闭包的应用 应用闭包的主要场合是:设计私有的方法和变量。

43410
领券