我有一个System.Timers.Timer
对象,在我的Elapsed方法中我想调用myObject.TriggerEvent(...)
,但我希望在创建的线程myObject
上进行调用。是否有捷径可寻?无论出于何种原因,这是一个坏主意吗? myObject
基本上是一个事件管理器服务,所以我希望它在它创建的线程上触发事件。我使用计时器的原因是因为我有另一个正在轮询服务以进行更新,它通过myObject
方法通知TriggerEvent
。
答案 0 :(得分:1)
您可以制作自己的SynchronizationContext实施,并将其实例提供给myObject.TriggerEvent
的来电者。如果您在WPF,SL或WinForms应用程序中使用myObject
,则可以使用其现有的SynchronizationContext类实现并在GUI线程上创建myObject
。
答案 1 :(得分:0)
我建议使用Dispatcher。它是在WPF的背景下创建的,但没有理由不能在其他地方使用它。我已经使用了几次,但我总是有一个消息泵(Win32),但我相信它也可以在服务上下文中使用(IIS等) - 但是我没有写过这样的代码,所以YMMV。 This is a good article from a WPF angle。
埃里克