Search code examples
c#disposeuser-controlsdisposable

Does userControl1.Dispose() take care of all its disposable objects?


i have made a userControl library .. and it contains NetworkStream, StreamReader, FileStream
So do i have to Dispose them all when the form that has this userControl closes ??

I mean There's no such Form1_FormClosing(object sender,FormClosingEventArgs e) in a userControl so when should i dispose those streams?
Does userControl1.Dispose() take care of that?

thanks in advance :)


Solution

  • UserControl.Dispose() disposes the components in it's Controls collection, but nothing more.

    You can handle the UserControl.Disposed event, or you can properly implement the Dispose pattern.

    For C# user controls, protected override void Dispose(bool disposing) is auto-created in UserControl1.Designer.cs. You can amend it to:

    protected override void Dispose(bool disposing)
    {
        if (disposing)
        {
            if (components != null)
            {
                components.Dispose();
            }
    
            // Dispose your streams here
        }
    
        base.Dispose(disposing);
    }