2014-11-27 26 views
9

Nie wiem zbyt wiele na temat Windows Message Pump, ale domyślam się, że zdarzenia są uruchamiane za pomocą Message Pump.Wyczyść wiadomości w Windows Message Pump

1) Kiedy moja kontrola przeglądarka przechodzi do niektórych stron internetowych, tworzy różne wydarzenia dokumentów ukończenia, raz ja mam to, co potrzebne w WebBrowser_Document_Completed(), chcę ignorować wszystkie kolejny dokument completion.How Czy mogę to zrobić?

2) Jeśli mogę pokazać MessageBox() w Document_Completed (...), pokazuje on wiele okno komunikatu, pokazuje, że działa on na równoległym threads.but gdy debugować go, i znaleźć, że działa on zawsze na głównym wątku.to gdy są tworzone inne dwa wątki?

3) W tym samym czasie, kiedy naciśnij blisko, zamyka okno, ale proces nadal działa w tle, nie używam żadnego innego wątku nadal widzę dwa inne wątki podczas debugowania. Wielkie dzięki.

+0

Jak tylko pojawi się pierwszy wydarzenie, możesz zrezygnować z subskrypcji wydarzenia lub użyć flagi, aby zignorować wydarzenie? Btw jak doszedłeś do wniosku, że istnieje wiele wątków? –

+0

@SriramSakthivel Program nie pójdzie dalej, jeśli Dialog Result nie zostanie zwrócony, jeśli działa na tym samym wątku, to jak wiele Skrzynek z wiadomościami jest wyświetlanych jednocześnie, Tak jak wywnioskowałem – Charlie

+0

Reentracja może to spowodować, więc technicznie pojedynczy wątek może to zrobić. Wyświetl komunikat "Thread.CurrentThread.ManagedThreadId" w oknie wiadomości, aby potwierdzić, że naprawdę są to różne wątki. –

Odpowiedz

0

Najbardziej bezpośrednia metoda wykonania tej czynności polega na przechwyceniu i ocenie wiadomości propagowanych do kontroli przez zastąpienie jej metodą WndProc(). Przy odrobinie obserwacji debuggera możesz zidentyfikować stałą wm_message, która odpowiada twojemu zdarzeniu docelowemu, a następnie odpowiednio zmienić przepływ roboczy. Jest bardzo dobrym przykładem na stronie MSDN: https://msdn.microsoft.com/en-us/library/system.windows.forms.control.wndproc%28v=vs.110%29.aspx?f=255&MSPPError=-2147217396

aby zorientować wiadomości (ów) widzisz/szukasz, odniesienie: http://www.pinvoke.net/default.aspx/Constants/WM.html