繁体   English   中英

C#BackgroundWorker问题

[英]C# BackgroundWorker question

我有一个由BackgroundWorker异步工作的方法。 在此方法中,某些代码以1000 ms的间隔无限循环。

在此代码内,根据某个值,将调度一个事件。 据我了解,此事件与引发它的代码在同一线程中运行。

但是我想要的是,此事件与包含BackgroundWorker的对象在同一线程中运行。 我该如何实现?

使用Timer安排重复事件会更好。 如果这是Windows Forms应用程序(我想是因为您希望在“拥有”线程的上下文中运行它),则应使用System.Windows.Forms.Timer实例。

根据您的域和应用程序,您可以使用ProgressChanged事件(和ReportProgress方法),该事件在所需的线程中运行。

您的“接收”线程是GUI线程吗? 如果是这样,请查看Control.Invoke()或Control.BeginInvoke()。 假设正在处理此定期事件的是您的表单或表单上的某些控件,那么您应该能够执行此操作。

您可能需要看一下System.Threading.SynchronizationContext ,它可用于将事件发布回BackgroundWorker Holder。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM