2012-03-24 67 views
1

我已經做了一個userControl庫..它包含NetworkStream,StreamReader,FileStream
所以我必須在具有此userControl的窗體關閉時處置它們全部?
userControl1.Dispose()是否處理​​所有的一次性對象?

我的意思是有一個用戶控件沒有這樣的Form1_FormClosing(object sender,FormClosingEventArgs e)所以當我應該處理這些流?
是否userControl1.Dispose()照顧?

在此先感謝:)

+0

我假設這是一個雙贏的問題,如果是的話你可以更新標籤? – Slugart 2012-03-24 09:39:10

回答

3

UserControl.Dispose()部署的組件在它的Controls集,但僅此而已。

您可以處理UserControl.Disposed事件,或者你可以properly implement the Dispose pattern

對於C#用戶控件,protected override void Dispose(bool disposing)是自動建立在UserControl1.Designer.cs。您可以修改它:

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

     // Dispose your streams here 
    } 

    base.Dispose(disposing); 
} 
0

userControl1.Dispose()除非你覆蓋它,並把代碼處置你的對象,這是你應該做的不會奇蹟般地照顧它。

看看this answer看看如何實現它,用你的調用來取代你的流去除事件。

相關問題