2016-05-17 19 views
0

Ich hatte kürzlich eine Situation, in der ich ein Formular hatte, das ich abfangen und für das ich Nachrichten verarbeitete. Beim ersten Öffnen des Formulars funktionierte alles einwandfrei, aber nach dem Schließen und dem erneuten Öffnen erhielt ich eine ObjectDisposedException.ObjectDisposedException bei Verwendung von IMessageFilter

ich endlich herausgefunden, dass ich

Application.RemoveMessageFilter(this) 

nennen benötigt, wenn die Form geschlossen wird, sonst ist es immer wieder versucht, Nachrichten für die geschlossene Form zu verarbeiten. Ich habe keine Fragen/Antworten hier gesehen, die das angesprochen haben, also wollte ich es hinzufügen, falls jemand anderes das gleiche Problem hatte.

Das Beispiel auf MSDN zeigt auch nicht, den Nachrichtenfilter zu entfernen.

public partial class Template_Editor : Form, IMessageFilter 
{ 
    public Template_Editor(ICollection<Vendor> vendorList) 
    { 
     InitializeComponent(); 
     Application.AddMessageFilter(this); 
    } 

    public bool PreFilterMessage(ref Message m) 
    { 

    } 
} 

Antwort

0

Stellen Sie sicher,

Application.RemoveMessageFilter(this) 

anrufen, sobald Sie Verarbeiten von Nachrichten fertig sind (das heißt beim Schließen der Form)

Verwandte Themen