注:我已經閱讀了以下兩個問題已經:瞭解流和他們的壽命(沖洗,處置,關閉)
Can you explain the concept of streams?
我編碼在C#
- 在幾乎所有使用流的代碼示例中,幾乎總是調用.Dispose(),.Flush(),.Close()。
- 在流的概念中,完成了什麼?
- 如果我不處理存儲在變量中的流,我的應用程序是否在某處泄漏?
- 爲什麼我需要調用這些函數中的任何一個?我見過的代碼示例,不這樣做,仍然把工作做好(無明顯破損)
我目前正在建設中的我的應用程序類,它包含一個主要方法(允許稱之爲GetStream()
),返回經由myWebRequest.GetResponse().GetResponseStream()
GetStream()
返回可用於需要流(StreamReader的,位圖()等等)的任何動作的Stream
對象的主要方法的流。
有沒有辦法讓流在最後一次使用後自動處理(垃圾回收?)而不強制任何人調用.GetStream()
來手動處理它?你可能會說,我的問題是模糊的,一般的。我對流的理解並不穩固,因此任何有用的文章鏈接都可以提供比流媒體更深入的視頻流,可以提供。
最後應該是:'if(stream is IDisposable)((IDisposable)stream)。Dispose(); – Gonzalo 2009-12-08 04:34:07
對未知IDisposable的變量使用'using'會出現編譯器錯誤。然而它應該在技術上是:if(stream!= null)stream.Dispose(); – 2009-12-08 06:39:19
在許多情況下,即使還調用「Dispose」,顯式關閉流也是一個好主意。關閉流可能需要執行無法保證成功的操作;當發生這樣的問題時,'Close'的實現通常會拋出一個異常,而一些Dispose實現可能會扼殺這些異常(吞噬這些異常是邪惡的,但是允許它們從Dispose中傳播出去會經常破壞以前的異常,也是邪惡的;不同的邪惡被認爲是較小的)。 – supercat 2013-12-09 18:04:10