StreamWriter不刷新

时间:2019-04-06 14:22:58

标签: c# io streamwriter

我想写一个大约一千万行的文件。我正在将StreamWriter与using语句一起使用,但是StreamWriter似乎没有刷新。这是我的代码:

public void ExportRecords(IEnumerable<Record> records, string path)
    {
        using(TextWriter writer = new StreamWriter(path))
        {
            writer.WriteLine("header");

            foreach(var record in records)
            {
                string line = "";
                //Fill line with record properties
                writer.WriteLine(line);
            }
        }
    }

StreamWriter的特定行上不添加任何行。那么问题出在哪里呢?

EDIT

如前所述,代码是异步运行的。

是这样的:

Task.Run(() =>
{
    if (!String.IsNullOrEmpty(folderPath))
    {
        var records = _generator.GenerateData();

        _dataService.ExportRecords(records, $"{folderPath}/RECORDS.csv");
        //Just a message box
        _reporter.ReportMessage($"Generation and exportation finished");
    }
    else
    {
        IsGenerating = false;
        _reporter.ReportMessage("No output file was created");
    }

});

因此,我确实设置了一个断点来检查该方法是否开始执行,并且确实如此。我只是表示代码没有卡在生成方法中。

2 个答案:

答案 0 :(得分:1)

暂时将应用程序的类型更改为控制台应用程序(如果是Windows应用程序),并在关键时刻添加一些Console.WriteLine,以使您对过程的进度有一些反馈。甚至更好的是,您可以使用log4netSerilog之类的库将日志记录添加到应用程序中。不仅在开发/调试阶段,它在应用程序的生产阶段也将很有用。

答案 1 :(得分:0)

Flush()如果需要在操作过程中的某个时刻进行手动调用,否则该流仅在处理后的语句结尾才被刷新。