C#threads - 在线程之间发送消息

时间:2010-05-26 04:30:38

标签: c# multithreading mfc

我正在开发一个项目,该项目涉及重用以及将一些现有的MFC代码迁移到C#。

MFC中的当前代码创建一些线程并使用:: PostthreadeMessage()和ON_THREAD_MESSAGE(msg,func)通过消息进行线程间异步通信。

:: PostthreadeMessage() - >将消息发送到特定的线程ID。 ON_THREAD_MESSAGE(msg,func) - >收到消息(msg)时调用函数(func)。

由于我不太了解C#中的线程接口,我试图在C#中搜索类似的API,但是找不到。

如果有人可以帮我在C#

中找到适当的功能,那就太棒了

3 个答案:

答案 0 :(得分:1)

以下是C# MVP Nicholas Paldino的建议:

  

如果您要发布帖子,和   不是特定的窗口,那么你   必须有一些东西   实现IMessageFilter   接口,然后传递   实现静态   AddMessageFilter方法就可以了   应用程序类,所以它可以处理   上传来的消息   线程。

     

从另一个主题,你将拥有   使用PostThreadMessage API   通过P / Invoke层的方法。

答案 1 :(得分:1)

我建议你不要为应用程序的这个(内部线程通信)部分做一个直接端口。您可以检查是否可以使用代表和活动。委托可以在启动时注册,可以调用这些代理(回调)而不是用户消息。

答案 2 :(得分:1)

如果你的两个线程都在C#中并且你在.NET 4上我只使用ConcurrentQueue<T>并从一个线程排队消息然后在另一个线程上消费它们。