2011-12-19 4 views
7

SynchronizationContext имеет свойство под названием IsWaitNotificationRequired. Из его цели следует, что docs:Что такое SynchronizationContext.IsWaitNotificationRequired for?

Определяет, требуется ли оповещение об ожидании.

true, если требуется уведомление о ожидании; в противном случае - false.

Гоша, это проясняет ситуацию.

Что именно это «оповещение об ожидании», и когда/почему это требуется/не требуется? Есть IsWaitNotificationRequired что-то вроде линий Control.InvokeRequired, или это что-то другое?

+0

Этот ответ может быть полезен: http://stackoverflow.com/a/5109784/245183 –

+0

@OndrejTucny, я не уверен, что делать с этим ответом ... это означает, что он позволяет указать, какой WinAPI вызовы 'Monitor.Enter' и' Monitor.Exit' фактически используют для ожидания блокировки? Что происходит, когда 'IsWaitNotificationRequired' является ложным? –

+0

Внутренний метод WaitHelper() - это ключ, он вызывает код ожидания дескриптора внутри CLR, который безопасен для однопоточных квартир COM. Он накачивает конвейер сообщений, чтобы поток был STA, чтобы гарантировать, что ожидание не вызывает взаимоблокировку. WPF нуждается в этом. Просмотрите MsgWaitForMultipleObjects(). –

ответ

1

Это для инфраструктуры, которая позволяет подключиться к процедуре ожидания синхронизации CLR. Этот блог объясняет, как это работает: http://www.bluebytesoftware.com/blog/PermaLink,guid,710e6ba3-60e9-4f5e-a5a7-d878015c7a16.aspx

Это свойство всегда будет возвращать false, если это поведение не было специально переопределены в подклассе SynchronizationContext и если это не вызывается изменённые реализация метода Wait.

+0

Ссылка не работает :-( –

Смежные вопросы