2011-08-29 215 views
6

我有輸入流的方法:如何知道流是否關閉?

public void Export(Stream finalOutPutStream) 

出於測試目的,我把它叫做一個內存流,這樣的:

// When 
_exporter.Export(new System.IO.MemoryStream()); 

但是,當在該方法中,我想寫在這個內存流上,我得到一個ObjectDisposedException。

此流不包含在using語句中,我不明確調用.Dispose()。

發生了什麼事?

謝謝:)

- 編輯:我不好,問題是從第三方作家(DotNetZip)。當我調用zip.Save(新的MemoryStream())時發生異常。我會在他們的論壇上提問。 對不起,並感謝您的幫助。

+0

你怎麼寫到流?例如,如果將'finalOutPutStream'封裝在'StreamWriter'中,關閉'StreamWriter'也會關閉基礎流。 –

+0

在寫流之前,在寫流器關閉之前發生異常。但是,謝謝,我不知道底層流也會被關閉! –

+0

你在'Export'方法中得到異常嗎? –

回答

4

您可以使用:CanRead,CanSeek,CanWrite屬性檢查流可用性。

+1

所有這些都是真的 –

+0

我正在研究這一點。我正在把流傳給另一個班。雖然確實沒有別的東西應該試圖隨意使用流,但它很難單元測試關閉流排序的功能,然後讓所有這些屬性返回true。 :/ – IAbstract

+0

從關閉的流的CanRead始終返回True – biv

-6

,如果你把裏面使用它會爲你做 EX關閉和資源釋放的碼流創建:

using(Stream s = new MemoryStream()) 
{ 
// do your operations 
} 
+1

OP不詢問如何關閉/處理流。 – IAbstract

相關問題