2014-11-27 12 views
9

Ich weiß nicht viel über Windows Message Pump, aber ich denke, Ereignisse werden mit Message Pump ausgelöst. Nachrichten in Windows Message Pump löschen

1) Wenn mein Web-Browser-Steuerelement auf einigen Websites navigiert, es verschiedene Ereignisse von Document Abschluss schafft, sobald ich bekam, was ich in WebBrowser_Document_Completed benötigt(), ich will alle weiteren Dokument completion.How ignorieren Kann ich es schaffen?

2) Wenn ich eine MessageBox zeigen() in Document_Completed (...), Es zeigt mehrere Meldungsfeld zeigt, dass es auf parallelen threads.but läuft, wenn ich es debuggen, i finden Sie, dass es immer auf Hauptthread.so läuft, wenn andere zwei Threads erstellt werden?

3) Zur gleichen Zeit, wenn ich schließe, schließt es das Fenster, aber Prozess läuft immer noch im Hintergrund, ich benutze keinen anderen Thread noch sehe ich zwei andere Threads, wenn ich debuggen. Vielen Dank.

+0

Sobald Sie die ersten bekommen Ereignis, können Sie das Ereignis abmelden oder eine Markierung verwenden, um das Ereignis zu ignorieren? Wie bist du zu dem Schluss gekommen, dass es mehrere Threads gibt? –

+0

@SriramSakthivel Programm geht nicht weiter, wenn Dialog Ergebnis nicht zurückgegeben wird, wenn es auf Same-Thread läuft, dann wie mehrere Message-Box gleichzeitig angezeigt werden, dass wie abgeschlossen – Charlie

+0

Reentracy kann dazu führen, so dass technisch einzelnen Thread dies tun können. Zeigen Sie die 'Thread.CurrentThread.ManagedThreadId' in der Nachrichtenbox an, um zu bestätigen, dass es sich tatsächlich um verschiedene Threads handelt. –

Antwort

0

Der direkteste Weg, dies zu tun, wird sein, Nachrichten abzufangen und auszuwerten, die an Ihr Steuerelement weitergegeben werden, indem es seine WndProc() Methode überschreibt. Mit ein wenig Debugger-Beobachtung können Sie die wm_message-Konstante identifizieren, die Ihrem Zielereignis entspricht, und dann den Ausführungsfluss entsprechend ändern. Es ist ein ziemlich gutes Beispiel dafür auf der MSDN-Website: https://msdn.microsoft.com/en-us/library/system.windows.forms.control.wndproc%28v=vs.110%29.aspx?f=255&MSPPError=-2147217396

Um eine Vorstellung von der Nachricht zu erhalten (s) Sie sehen/suchen, Referenz: http://www.pinvoke.net/default.aspx/Constants/WM.html