我正在开发一个项目,该项目涉及重用以及将一些现有的MFC代码迁移到C#。
MFC中的当前代码创建一些线程并使用:: PostthreadeMessage()和ON_THREAD_MESSAGE(msg,func)通过消息进行线程间异步通信。
:: PostthreadeMessage() - >将消息发送到特定的线程ID。 ON_THREAD_MESSAGE(msg,func) - >收到消息(msg)时调用函数(func)。
由于我不太了解C#中的线程接口,我试图在C#中搜索类似的API,但是找不到。
如果有人可以帮我在C#
中找到适当的功能,那就太棒了答案 0 :(得分:1)
以下是C# MVP Nicholas Paldino的建议:
如果您要发布帖子,和 不是特定的窗口,那么你 必须有一些东西 实现IMessageFilter 接口,然后传递 实现静态 AddMessageFilter方法就可以了 应用程序类,所以它可以处理 上传来的消息 线程。
从另一个主题,你将拥有 使用PostThreadMessage API 通过P / Invoke层的方法。
答案 1 :(得分:1)
我建议你不要为应用程序的这个(内部线程通信)部分做一个直接端口。您可以检查是否可以使用代表和活动。委托可以在启动时注册,可以调用这些代理(回调)而不是用户消息。
答案 2 :(得分:1)
如果你的两个线程都在C#中并且你在.NET 4上我只使用ConcurrentQueue<T>
并从一个线程排队消息然后在另一个线程上消费它们。