我有一个由BackgroundWorker异步处理的方法。在这种方法中,一些代码无限循环,间隔为1000毫秒。
在此代码中,根据某些值,将调度事件。据我所知,这个事件在与引发它的代码相同的线程中运行。
但我想要的是,此事件在与持有BackgroundWorker的对象相同的线程中运行。 我该怎么做?
答案 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
。