創建一個帶有using塊(不調用Close())的XmlWriter是足夠的嗎?還是最好使用try/finally塊並在最後調用Close()?XmlWriter:如果使用using塊,正在調用Close()嗎?
12
A
回答
16
使用塊是try/finally塊的快捷方式,在實現IDisposable的任何對象上調用Dispose()。
對於流和流編寫器,Dispose()通常手動調用Close()。使用反射鏡,這裏的XmlWriter的Dispose方法:
protected virtual void Dispose(bool disposing)
{
if (this.WriteState != WriteState.Closed)
{
try
{
this.Close();
}
catch
{
}
}
}
那麼簡單的答案是肯定的,using
塊將處理關閉的XmlWriter爲您服務。
3
不,不需要單獨調用它。這正是使用塊的用途。
當執行退出使用塊時,XmlWriter被丟棄,而在內部,XmlWriter.Dispose
調用XmlWriter.Close
。
3
但是...... 反射器上XmltTextWriter.Close()顯示:
如果(this.closeOutput) { this.stream.Close() } this.Stream = null;
closeOutput標誌設置爲settings.CloseOutput,它可以是false。
確定處理程序在XmlTextWriter上使用「using」表達式時是空閒的嗎?
+0
現在它顯示空虛擬功能:public virtual void Close(){} – amuliar 2014-01-18 07:34:36
相關問題
- 1. 如果你連一個使用塊中調用close
- 2. 在你調用mysqli :: close之前你需要調用mysqli_stmt :: close嗎?
- 3. 我正確使用「using」語句嗎?
- 4. close()在Linux上調用fsync()嗎?
- 5. 我應該在ServiceController上調用Close()嗎?
- 6. 單向WCF調用後在服務代理塊上調用Close()
- 7. 在ADO.NET事務中使用using()塊
- 8. 使用的XmlWriter
- 9. 直接調用close()和使用ChannelFutureListener的差別.CLOSE
- 10. 如何正確使用「using namespace foo?」
- 11. 在Python中,在使用read()之後,我需要使用close()嗎?
- 12. 如果使用「using」語句,是否需要在流或作者上調用Flush()?
- 13. 如何遞歸使用XmlWriter?使用
- 14. 可以使用os.open/read/write/close嗎?
- 15. 是否有可能引用GC'd目前正在被`using`塊使用?
- 16. 的Java:正確使用的close() - 上PrinterWriter
- 17. MySQL()函數close()在exit()之後仍然會被調用嗎?
- 18. 我應該在ObjectOutputSream的close()之前調用reset()嗎?
- 19. 錯誤發生後,我應該在URLLoader上調用close()嗎?
- 20. 在這種情況下,我真的需要調用QFile :: close()嗎?
- 21. 何時調用mysqli :: close
- 22. 「連接重置」如果服務器調用close()寫()
- 23. 如果調用者對其調用close(),生成器是否可以注意到?
- 24. 在close()之前使用flush()
- 25. 在AndroidHttpClient上調用.close在使用ssl時崩潰
- 26. 如何在StreamWriter中使用Close()方法
- 27. 退出Using塊
- 28. 在postgres中使用'USING'
- 29. 使用XmlWriter添加屬性
- 30. 什麼時候應該在ContentProvider使用的SQLiteOpenHelper上調用close()
這確實是我剛纔看到的代碼。它所做的就是調用'Close'。 – 2010-04-14 18:08:53