c# - File.Create 异步写入保持文件锁定

标签 c# asynchronous file-io

我需要以异步方式写入一个文件,每半秒一次。而且我只能在 .Net Framework 2.0 上使用 C#

我尝试使用File.CreateBeginWrite。但它保持文件锁定,我需要能够访问它(读取)。我尝试摆弄安全设置,但我不太确定我在那里做什么。

感谢任何帮助!

编辑:

var bytes = Encoding.ASCII.GetBytes(stringBuilder.ToString());
var filePath = Path.Combine(OUTPUT_FOLDER, FILE_NAME);
var fileSteam = File.Create(filePath, bytes.Length, FileOptions.Asynchronous);
m_IAsyncResult = fileSteam.BeginWrite(bytes, 0, int.MaxValue, WriteCallback, new State(fileSteam));

private void WriteCallback(IAsyncResult ar) {
    var state = (State)ar.AsyncState;
    var stream = state.Stream;
    stream.EndWrite(ar);

    m_IAsyncResult = null;
}

最佳答案

您需要确保文件以非独占方式打开。查看此帖子How can I read a text file without locking it?

关于c# - File.Create 异步写入保持文件锁定,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30626966/

相关文章:

c# - 迭代 datagridview 列并更改列标题

c# - .Net Core 动态 dbContext

windows - 如何找出在Windows中打开的EXE

c# - F# 异步 lambda 与 C# 异步模型互操作

c++ - 文件读写产生valgrind错误

file - Groovy(文件IO): find all files and return all files - the Groovy way

c# - 正则表达式 C#

c# - 是否有一个通用集合,我可以通过索引器通过字符串键和索引访问元素?

c# - 当我使用 .NET WebClient DownloadFileAsync 时,我随机返回零长度文件

c# - Task.Factory.StartNew 和主 UI