C#BackgroundWorker问题

时间:2010-02-11 15:50:47

标签: c# events backgroundworker

我有一个由BackgroundWorker异步处理的方法。在这种方法中,一些代码无限循环,间隔为1000毫秒。

在此代码中,根据某些值,将调度事件。据我所知,这个事件在与引发它的代码相同的线程中运行。

但我想要的是,此事件在与持有BackgroundWorker的对象相同的线程中运行。 我该怎么做?

4 个答案:

答案 0 :(得分:4)

最好使用Timer来安排重复发生的事件。如果这是一个Windows窗体应用程序(我假设它是因为你想在“拥有”线程的上下文中运行它),你应该使用System.Windows.Forms.Timer实例。

答案 1 :(得分:2)

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

答案 2 :(得分:0)

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

答案 3 :(得分:0)

您可能需要查看可用于将事件发布回BackgroundWorker持有者的System.Threading.SynchronizationContext