Я работаю над проектом, который включает многократное использование, а также миграцию части существующего кода MFC к C#.
Текущий код в MFC, создает некоторые потоки и использование:: PostthreadeMessage () и ON_THREAD_MESSAGE (сообщение, func) для предают асинхронную передачу потока земле через сообщения.
:: PostthreadeMessage ()-> отправляет сообщение в конкретный идентификатор потока. ON_THREAD_MESSAGE (сообщение, func)-> вызывает функцию (func), когда сообщение (сообщение) получено.
Так как я не очень знаю об интерфейсах поточной обработки в C#, я попытался искать подобный API в C#, но не смог найти любого.
Было бы замечательно, если кто-то может помочь мне в нахождении соответствующих функций с этой целью в C#
Вот совет от C# MVP Николаса Палдино:
Если вы пишете в поток, а не в а не в конкретное окно, то вам вам нужно будет иметь что-то, что реализует интерфейс IMessageFilter интерфейс, а затем передавать эту эту реализацию в статический AddMessageFilter метода класса приложения, чтобы он мог обрабатывать сообщение, которое приходит в поток.
Из другого потока вам придется использовать API PostThreadMessage через уровень P/Invoke.
Я бы посоветовал вам не делать прямой порт для этой (межпотоковой связи) части приложения. Может быть, вы можете проверить, можете ли вы использовать делегаты и события. Делегат может быть зарегистрирован при запуске, и эти делегаты (обратные вызовы) могут быть вызваны вместо пользовательского сообщения.
Если оба ваших потока на C# и вы на .NET 4, я бы просто использовал ConcurrentQueue
и ставил в очередь сообщения из одного потока, а затем потреблял их в другом.