Вопрос

Это тесно связано с предыдущий вопрос.

В управляемом мире:

  • Как мне проверить, есть ли в текущем потоке сообщения в его очереди сообщений?
  • Как мне уступить операционной системе и дождаться сообщения в текущем потоке (например, GetMessage или WaitMessage)?

Я ищу управляемые эквиваленты без PInvoke.

Это было полезно?

Решение

Вы можете использовать Добавьте функцию messagefilter.

Я не думаю, что есть блокирующий способ сделать это без P / Invoke, поскольку это выходит за рамки намерений .NET.

Другие советы

Вы могли бы переопределить WndProc, а затем запустить свое собственное событие при его вызове.Это, конечно, не было бы блокировкой.Если вы хотите заблокировать до получения сообщения, у вас мог бы быть метод в другом потоке, ожидающий объект синхронизации, и заставить WndProc сигнализировать об этом объекте.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top