考虑两个类;Producer
and Consumer
(与经典模式相同,每个都有自己的线程)。是否有可能Producer
拥有一个Event
which Consumer
可以注册并当生产者触发事件时,消费者的事件处理程序在其自己的线程中运行吗?这是我的假设:
附言。我并不是想实施Producer
- Consumer
图案。这是两个简单的类,我正在尝试重构生产者,以便它包含线程。
[UPDATE]
为了进一步扩展我的问题,我试图包装一个硬件驱动程序,以尽可能简单的方式使用。例如我的包装纸将有一个StateChanged
主应用程序将注册该事件,以便在硬件断开连接时收到通知。由于实际的驱动程序除了轮询之外没有其他方法来检查其存在,因此我需要启动一个线程来定期检查它。一旦它不再可用,我将触发需要在添加它的同一线程中执行的事件。我知道这是一个经典的生产者-消费者模式,但由于我试图使用我的驱动程序包装器进行简化,所以我不希望用户代码来实现消费者。
[UPDATE]
由于一些评论表明这个问题没有解决方案,我想添加几行可能会改变他们的想法。考虑到BeginInvoke
可以做我想做的事,所以这不应该是不可能的(至少在理论上)。实施我自己的BeginInvoke
并在内部调用它Producer
这是看待它的一种方式。只是我不知道如何BeginInvoke
可以!
您想要进行线程间通信。对的,这是可能的。
使用 System.Windows.Threading.Dispatcherhttp://msdn.microsoft.com/en-us/library/system.windows.threading.dispatcher.aspx http://msdn.microsoft.com/en-us/library/system.windows.threading.dispatcher.aspx
调度程序为特定线程维护一个按优先级排列的工作项队列。
当在线程上创建 Dispatcher 时,它就成为可以与该线程关联的唯一 Dispatcher,即使 Dispatcher 已关闭。
如果您尝试获取当前线程的 CurrentDispatcher 并且 Dispatcher 未与该线程关联,则会创建一个 Dispatcher。创建 DispatcherObject 时也会创建 Dispatcher。如果您在后台线程上创建调度程序,请确保在退出线程之前关闭调度程序。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)