假设我想做一些日志记录,我要做的第一件事就是打开一个FileStream
来写。
我想为应用程序重用相同的流,而不是为每个日志条目打开和关闭流
这意味着只要应用程序,流就会存在。
类似
public static class Logger
{
static StreamWriter SW;
}
现在问题是,我是否需要制作一个密切的方法Dispose
SW并将其称为Window.Closed
我觉得GC可以在应用程序结束时正确完成工作并释放SW。但我想确保不这样做会导致应用程序在某些特殊情况下挂起。
答案 0 :(得分:1)
...答案说当应用程序关闭时,操作系统将释放所有资源。
是的,但仅仅因为资源被释放并不意味着它以一种干净的方式被释放。
您需要处置StreamWriter
,因为默认情况下它不会立即刷新它的数据。如果在关闭应用程序之前没有关闭/处理它,则不会写出最后一段文本。
class Program
{
static StreamWriter SW = new StreamWriter("test.txt");
static void Main()
{
SW.Write("Test");
}
}
运行上述程序后,文本文件将不包含单词Test
。
如果您将SW.AutoFlush = true;
添加到程序中,则可以不处理它。但是在处理任何实现IDisposeable