синхронизация потоков между c # и переполнением стека

У меня есть приложение C # WPF, которое должно вызывать неуправляемую C ++ DLL и получать от нее простое уведомление о событии. DLL будет ожидать появления события клавиатуры, которое невозможно увидеть в .NET (VK_MEDIA_PLAY_PAUSE, пока приложение не имеет фокуса ввода), и уведомляет основное приложение. Я нашел пример использования семафоров для межпроцессной синхронизации, но это кажется излишним. Аналогично, использование именованных каналов, COM, сокетов или p / invoke кажется более чем необходимым.

В частности, я буду запускать работающий поток в приложении WPF, который будет ожидать сигнала о событии клавиатуры, а затем уведомлять основной поток пользовательского интерфейса, чтобы он что-то сделал, как только он это сделает.

Заранее спасибо.

0

Решение

Как только я получил указание в направлении именованных событий, решение стало ясным. На стороне C ++ CreateEvent создает именованные события. Но на стороне C # 2 типа событий, которые появляются первыми, это AutoResetEvent и ManualResetEvent, которые не принимают имена, а EventWaitHandle -. Как только я нашел этот класс, остальные встали на свои места. В моем проекте событие устанавливается на стороне C ++ в ответ на желаемое нажатие клавиши, а сторона C # ожидает событие в потоке BackgroundWorker и воздействует на него, когда оно происходит.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]