我需要在两个单独的文件中写两个日志:一个每秒写入530个字符30次,另一个每秒写入60个60次。我将保存将写入两个独立变量的数据,并分别写入n和m帧。要编写我使用的变量:
using (StreamWriter writer = new StreamWriter(newFileName, true))
然后
writer.Write(data)
现在......我知道使用“使用”的优点,但我想知道:它有开销吗?为什么不在代码的开头声明StreamWriter并在需要时使用它?
答案 0 :(得分:6)
好吧,如果您需要以这样的速度和频率编写数据,我建议您根本不要使用using
,因为最后using
将关闭并处置 stream对象,因此在下一个请求中,您需要重新初始化并重新打开stream
,这需要花费。
所以只需打开它并一直使用你需要它。手动处理后。
答案 1 :(得分:2)
using
语句本身没有任何实际开销。但是,打开和关闭非托管资源可能。如果你要打开它,而不是利用using
,那么执行日志记录的类需要实现IDispoable
。此外,在Dispose
方法中,需要正确处理流。最后,利用记录器的消费者,确保它在利用它时使用using
命令。
答案 2 :(得分:1)
as using
抛出try catch块:
using (StreamWriter writer = new StreamWriter(newFileName, true))
{
//do stuff
}
相当于:
StreamWriter writer = new StreamWriter(newFileName, true);
try
{
//do stuff
}
finally
{
if (writer!= null)
((IDisposable)writer).Dispose();
}
http://msdn.microsoft.com/en-us/library/yh598w02%28v=vs.110%29.aspx
手动调用.Dispose()
函数速度更快,或者正如Tigran所指出的那样,根本不进行处理。但是,要小心。