[英]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.