Темы C # - Отправка сообщений между темами - PullRequest
5 голосов
/ 26 мая 2010

Я работаю над проектом, который включает в себя повторное использование, а также перенос части существующего кода MFC на C #.

Текущий код в MFC создает несколько потоков и использует :: PostthreadeMessage () и ON_THREAD_MESSAGE (msg, func) для межпотоковой асинхронной связи через сообщения.

:: PostthreadeMessage () -> отправляет сообщение определенному идентификатору потока. ON_THREAD_MESSAGE (msg, func) -> вызывает функцию (func) при получении сообщения (msg).

Поскольку я не очень осведомлен об интерфейсах потоков в C #, я попытался найти похожие API в C #, но не смог найти ни одного.

Было бы замечательно, если бы кто-нибудь помог мне найти подходящие функции для этой цели в C #

Ответы [ 3 ]

1 голос
/ 26 мая 2010

Я бы посоветовал вам не использовать прямой порт для этой (межпотоковой связи) части приложения. Может быть, вы можете проверить, можете ли вы использовать делегатов и события. Делегат может быть зарегистрирован при запуске, и эти делегаты (обратные вызовы) могут быть вызваны вместо сообщения пользователя.

1 голос
/ 26 мая 2010

Если оба ваших потока находятся в C #, а вы в .NET 4, я бы просто использовал ConcurrentQueue<T> и помещал в очередь сообщения из одного потока, а затем использовал их в другом.

1 голос
/ 26 мая 2010

Вот совет C # MVP Николая Палдино :

Если вы публикуете в теме, и не в конкретное окно, то вы будет иметь то, что реализует IMessageFilter интерфейс, а затем передать это реализация к статическому Метод AddMessageFilter на Класс приложения, чтобы он мог обрабатывать сообщение, которое приходит на нить.

Из другой темы у вас будет использовать API PostThreadMessage метод через слой P / Invoke.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...