【发布时间】:2019-10-04 00:25:07
【问题描述】:
我使用多线程将结果写入文件。我有 100 个结果,但保存到文件的结果数只有 30 个。我该怎么办?
public async Task FileWriteAsync(string text)
{
string file = @"uid.txt";
using (FileStream sourceStream = new FileStream(file, FileMode.Append, FileAccess.Write, FileShare.None, bufferSize: 4096, useAsync: true))
using (StreamWriter f = new StreamWriter(sourceStream))
{
await f.WriteLineAsync(text);
}
}
public void ExFile(int line)
{
var uid = Regex.Match(txt_ListUID.Lines[line], @"c_user=(.*?);").Groups[1].ToString().Trim();
string text = uid + "|zxzxzx";
_ = FileWriteAsync(text)
}
【问题讨论】:
-
如果没有某种 IO 同步(以避免交错打开/写入/关闭),您无法可靠地从多个线程写入同一个文件。从多个线程调用 ExFile() 的原因是什么?似乎没有必要。
-
如果我运行多个线程,它会减少时间。
标签: c# multithreading asynchronous streamwriter