如果我在整个应用程序生命周期内需要 StreamWriter,在哪里处理它?我将把它处理在析构函数中,这行得通吗?我必须处理刷新数据,并且我不想使用 AutoFlush
功能,因为来自 msdn:“假设您始终调用 Close,您可以通过将 AutoFlush 设置为 false 来获得更好的性能(或者至少是 Flush)当您使用 StreamWriter 完成写入时。”
那么我应该像下面的代码一样在析构函数中Dispose
吗?
class Log
{
private static StreamWriter swLog = new StreamWriter("logMAIN.txt");
static ~Log()
{
swLog.Dispose();
}
public static void Push(LogItemType type, string message)
{
swLog.WriteLine(type + " " + DateTime.Now.TimeOfDay + " " + message);
}
}
upd 而不是 Dispose
我本想调用 Close
但在这种情况下它并不重要,因为它们似乎做的完全相同。
最佳答案
您似乎是根据 MSDN 中的一些性能信息决定不刷新的。这不是我要开始的地方。
您是否有证据表明使用 AutoFlush 会导致严重性能问题?
您是否考虑过以不同的方式缓解这些性能问题,例如有一个线程写入 StreamWriter
,自动刷新或每 20 秒定期刷新或其他方式?
请注意,您还没有告诉我们您正在编写哪种类型的应用程序 - 这可能会对您对关闭的了解程度产生重大影响。
另请注意,您给出的代码一开始就不是线程安全的。您最终可能会同时从多个线程使用 StreamWriter
;我怀疑 StreamWriter
是专门为这种情况设计的。
关于c# - 如果我在整个应用程序生命周期中需要 StreamWriter,在哪里处理它?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10741013/