Мне нужно написать C # API для регистрации глобальных горячих клавиш.Чтобы получить сообщение WM_HOTKEY, я использую System.Windows.Forms.NativeWindow
и запускаю собственный цикл сообщений с System.Windows.Forms.Application.Run (ApplicationContext)
. Когда пользователь хочет зарегистрировать горячую клавишу, он должен запустить метод под названием RegisterHotkey ()
, который останавливает цикл сообщений с помощью System.Windows.Forms.ApplicationContext.ExitThread ()
, регистрирует горячая клавиша с функцией RegisterHotKey ()
(P / Invoke) и снова запускает цикл сообщений. Это необходимо, потому что RegisterHotKey ()
должен вызываться в том же потоке, который создал окно, которое снова должно быть создано в том же потоке, который запускает цикл сообщений.
Проблема в том, что если пользователь вызывает метод RegisterHotkey ()
вскоре после запуска потока, в котором выполняется цикл сообщений, ApplicationContext.ExitThread ()
вызывается перед Application.Run (ApplicationContext)
, поэтому приложение блокируется на неопределенный срок. Кто-нибудь знает способ ожидания запуска цикла сообщений?
Заранее спасибо!