C # - Ожидание цикла сообщений WinForms

Мне нужно написать 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) , поэтому приложение блокируется на неопределенный срок. Кто-нибудь знает способ ожидания запуска цикла сообщений?

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

5
задан Jonas W 12 September 2011 в 18:58
поделиться