Потоки C# - Добавление сообщений между потоками

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

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

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

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

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

5
задан jnm2 1 February 2017 в 05:43
поделиться

3 ответа

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

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

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

1
ответ дан 15 December 2019 в 06:18
поделиться

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

1
ответ дан 15 December 2019 в 06:18
поделиться

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

1
ответ дан 15 December 2019 в 06:18
поделиться
Другие вопросы по тегам:

Похожие вопросы: