【问题标题】:CSV Helper, Write Row to file even in case user closes the appCSV Helper,即使用户关闭应用程序,也可以将行写入文件
【发布时间】:2020-07-03 10:24:31
【问题描述】:

即使用户在写入文件的过程中关闭应用程序,我也必须能够将行写入 CSV。我正在使用 CSVHelper 并创建我的文件,但是在处理过程中关闭它时没有写入任何内容。我正在尝试使用循环并一一写入记录,但它只会创建空文件。

           foreach (var item in requestBody)
            {
                result = "somestring"
                var blockResultBody = new BlockResultBody()
                {
                    ID = item.ID ,
                    Result = result
                };

                csv.WriteRecords(new List<BlockResultBody>() { blockResultBody });
                // If I Close app here, I want my row to be written to file.
            }

【问题讨论】:

  • 你如何创建你的 csv 对象。向我们展示整个代码。
  • 您可以让应用程序检测到关闭,如果 CSV 正在写入,请等待几秒钟以使其完成,然后再关闭。

标签: c# .net parsing streamwriter csvhelper


【解决方案1】:

您可以将StreamWriter 设置为AutoFlush。这样,它将在每行写入后刷新流,而不是在刷新之前等待缓冲区填充。如果记录数较多,这可能会使写入文件的速度变慢。

using (var writer = new StreamWriter("path\\to\\file.csv"))
using (var csv = new CsvWriter(writer, CultureInfo.InvariantCulture))
{
    var result = "somestring";
    var blockResultBody = new BlockResultBody()
    {
        ID = item.ID,
        Result = result
    };

    writer.AutoFlush = true;

    csv.WriteRecords(new List<BlockResultBody>() { blockResultBody });
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-07
    • 2023-01-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多