Pio*_*pla 4 .net c# multithreading message-queue thread-safety
我有一个后台线程来处理与外部服务的通信.每次后台线程收到消息时,我都想将其传递给UI线程进行进一步处理(显示给用户).
目前我已经创建了一个线程安全的消息队列,它在Timer.Tick中定期汇集并填充后台线程.但这种解决方案是次优的.
你知道如何使用消息泵将事件从后台线程传递到ui线程吗?
有一些技巧。
Control.Invoke() (等)
我发现这种winforms技术始终易于使用,但是请注意,您需要正确制定一些细微的规则。我试图捕获一个通用的有效实现,该实现可以正确处理我在stackoverflow上其他地方发布的代码段中的规则。
我不需要太多使用这项技术,因此我真的不能说出任何有意义的信息。您应该知道它存在。我相信,这是确保某些线程在特定线程的上下文中被调用的有效方法,即使该线程不是 ui线程也是如此。
如果使用WPF,则WPF控件通常将派生自来DispatcherObject提供Dispatcher对象。与相比,这是一种功能更丰富的同步技术Control.Invoke(),但也更加复杂。请务必仔细阅读文档。
| 归档时间: |
|
| 查看次数: |
11294 次 |
| 最近记录: |