2011-12-19 11 views
7

SynchronizationContext ma właściwość o nazwie IsWaitNotificationRequired. W tym celu numer docs ma następujące znaczenie:Co to jest parametr SynchronizationContext.IsWaitNotificationRequired?

Określa, czy wymagane jest powiadomienie o oczekiwaniu.

true, jeśli wymagane jest powiadomienie o oczekiwaniu; w przeciwnym razie false.

O Boże, to wyjaśnia.

Czym dokładnie jest to "powiadomienie o oczekiwaniu" i kiedy/dlaczego byłoby to wymagane/niewymagane? Czy jest to IsWaitNotificationRequired coś w stylu Control.InvokeRequired, czy jest to coś innego?

+0

Ta odpowiedź może być pomocna: http://stackoverflow.com/a/5109784/245183 –

+0

@OndrejTucny, nie jestem pewien, co zrobić z tą odpowiedzią ... Czy to oznacza, że ​​pozwala określić, który WinAPI wywołania 'Monitor.Enter' i' Monitor.Exit' faktycznie używają do oczekiwania na blokadę? Co się dzieje, gdy 'IsWaitNotificationRequired' ma wartość false? –

+0

Wewnętrzna metoda WaitHelper() jest kluczem, wywołuje kod oczekiwania na uchwyt wewnątrz CLR, który jest bezpieczny dla pojedynczych mieszkań z gwintem COM. Pompuje pętlę wiadomości, że wątkiem jest STA, aby zapewnić, że oczekiwanie nie spowoduje zakleszczenia. WPF tego potrzebuje. Przejrzyj MsgWaitForMultipleObjects(). –

Odpowiedz

1

Jest to infrastruktura, która umożliwia podpięcie się do procedury oczekiwania synchronizacji CLR. Ten blogu wyjaśnia, jak to działa: http://www.bluebytesoftware.com/blog/PermaLink,guid,710e6ba3-60e9-4f5e-a5a7-d878015c7a16.aspx

Ta nieruchomość zawsze zwróci false jeśli takie zachowanie nie zostało konkretnie przesłonięte w podklasie SynchronizationContext a jeśli to robi Twój przesłonięte wdrożenie metody Wait zostanie wywołany.

+0

Link jest zepsuty :-( –