保持文件打开,不要在应用程序崩溃时丢失数据

时间:2013-05-14 15:00:07

标签: c# filestream

我需要将信息记录到文件大约每分钟1000-2000次。我还需要保存该信息以防应用程序崩溃。

目前我正在做的事情:

using(StreamWriter sw=new StreamWriter(filename,true))
{
    sw.WriteLine(info);
}

这很有效,但速度非常慢。

我想做这样的事情:

static StreamWriter sw=new StreamWriter(file,true);

....

public static void Main(...)
{
    .....
    sw.WriteLine(....);
}

但是当我编写这样的代码时,我担心当应用程序崩溃时,我存储的信息会丢失。

如何保存文件中的信息而不必一直打开和关闭它?

2 个答案:

答案 0 :(得分:5)

每次写作后都可以致电StreamWriter.Flush()

public static void Main(...)
{
    .....
    sw.WriteLine(....);
    sw.Flush();
}

但您应该使用NLogLog4Net

答案 1 :(得分:1)

我已使用此class它实现了每X消息或Y时间刷新的队列。

您可以改进它在flushLog()中移动while块之外的while块并设置固定文件名