2012-03-24 1 views
1

Ich habe eine userControl-Bibliothek gemacht .. und es enthält NetworkStream, StreamReader, FileStream
Also muss ich sie alle zu dispose, wenn das Formular, das dieses userControl schließt?
Macht userControl1.Dispose() sich um all seine Einwegobjekte kümmern?

Ich meine, es gibt keine Form1_FormClosing(object sender,FormClosingEventArgs e) in einem userControl, also wann sollte ich diese Streams entsorgen?
Macht userControl1.Dispose() das?

Dank im Voraus :)

+0

Ich nehme an, dies ist eine Win-Forms-Frage, wenn ja könnten Sie die Tags aktualisieren? – Slugart

Antwort

3

UserControl.Dispose() verfügt über die Komponenten in seiner 10 Kollektion, aber nichts mehr.

Sie können das Ereignis UserControl.Disposed behandeln, oder Sie können properly implement the Dispose pattern.

Für C# -Bedienelemente wird protected override void Dispose(bool disposing) automatisch in UserControl1.Designer.cs erstellt. Sie können es ändern:

protected override void Dispose(bool disposing) 
{ 
    if (disposing) 
    { 
     if (components != null) 
     { 
      components.Dispose(); 
     } 

     // Dispose your streams here 
    } 

    base.Dispose(disposing); 
} 
0

userControl1.Dispose() dauert es nicht auf magische Pflege, wenn Sie es und in Code zu setzen außer Kraft setzen Ihre Objekte zu verfügen, das ist, was Sie tun sollten.

Werfen Sie einen Blick auf this answer, um zu sehen, wie es zu implementieren, ersetzen Sie das Ereignis-Resegering mit Ihren Aufrufen, um Ihre Streams zu entsorgen.

Verwandte Themen