【发布时间】:2013-11-22 13:44:32
【问题描述】:
我需要在两个单独的文件中写入两个日志:一个每秒写入 530 个字符 30 次,另一个每秒写入 50 个字符 60 次。我将要写入的数据保存在两个单独的变量中,并分别每 n 帧和 m 帧写入一次。编写我使用的变量:
using (StreamWriter writer = new StreamWriter(newFileName, true))
然后
writer.Write(data)
现在...我知道使用“使用”的优点,但我想知道:它有开销吗?为什么不在代码开头声明一个 StreamWriter 并在需要时使用它?
【问题讨论】:
-
完成后立即关闭/处置非托管资源。
-
直接回答你的问题:你想用 using 包围一个资源而不是仅仅声明它并在使用它时访问它的原因是因为意外退出。如果代码中的某些内容引发错误,或者进程因任何原因停止,那么您将没有机会进行清理。您需要确定意外退出的可能性有多大,要捕获哪些异常以及在这些情况下是否可以接受清理。
-
基于@Tigran 的回答,看看这个SO post,它详细介绍了一个类似的场景。
-
谁在使用上述日志文件以及多久使用一次?如果您没有关闭流或 Flush() 它们,那么任何试图读取日志文件的人都可能看不到最新数据(或者甚至可能出错,这取决于他们如何读取数据)。需要考虑的事情......
标签: c# streamwriter using-statement