请问如何使用CsvWriter在不阻塞的情况下写入对象列表?对我来说并不明显。
我需要先调用WriteRecords()然后再调用FlushAsync(),还是应该使用NextRecordAsync()逐个写入每个对象?
实际上,我希望有一个专门的方法可以使用,但它并不存在:
最初的回答:
public Task WriteRecordsAsync(...);
请问如何使用CsvWriter在不阻塞的情况下写入对象列表?对我来说并不明显。
我需要先调用WriteRecords()然后再调用FlushAsync(),还是应该使用NextRecordAsync()逐个写入每个对象?
实际上,我希望有一个专门的方法可以使用,但它并不存在:
最初的回答:
public Task WriteRecordsAsync(...);
WriteRecords
会代替你调用 NextRecord
,因为它在写入多条记录时需要这样做。因此,你需要手动编写这些记录。只需再添加几行代码即可。
foreach (var record in records)
{
csv.WriteRecord(record);
await csv.NextRecordAsync();
}
没有 WriteRecordsAsync
的原因是它不是必需的。这基本上只会复制库中大部分代码,只是为了节省几行代码。系统中仅在写入 TextWriter
时才需要低级别的 async
,因此尽可能少的使用 async
。
NextRecord
的异步版本时会遇到InvalidOperationException: The stream is currently in use by a previous operation on the stream.
的问题。 - Mark Good
Task CsvWriter.WriteRecordsAsync<T>(IEnumerable<T> records)
。 - ThePersonWithoutC