2015-09-24 22 views
0

我有構造函數中寫入文件頭的類。然後用戶調用將數據塊寫入流的方法。然後在Dispose中,我正在寫尾部數據。寫入流/ finalyze處理方法

我不想提取任何具體的方法,因爲它會破壞封裝並且用戶總是忘記調用它。使用「使用」構造是非常優選的。

我想知道這是否在概念上正確地寫入Dispose中的任何東西?

回答

2

確定它是正確的。框架中的許多類都是這樣。例如FileStream將沖刷其Dispose,它將寫入該文件的緩衝區。同爲BufferedStreamStreamWriter

只是不Finalize(終結,又名~YourClass)混淆Dispose - 這是不一樣的東西,依靠這一個將是一個非常糟糕的事情™。

+0

看起來像理解我可能有什麼概念性問題 - Dispose不應該拋出異常。如果我有複雜的代碼 - 在Dispose上跟蹤異常可能很痛苦。 – Vitaliy

+0

是的,你應該避免在'Dispose'中出現異常,出於同樣的原因,你應該在'finally'塊中避免它們:它們可以掩蓋'try'部分中的實際異常。有時這是不可避免的(儘管如此,關閉寫入時的I/O錯誤)。 –

+0

您是否有任何樣本/或設計名稱,在用戶完成類別狀態後寫入最終數據? – Vitaliy