File.Create Async write保持文件锁定

时间:2015-06-03 17:34:58

标签: 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;
}

2 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:0)

如果您可以使用File.WriteAllTextFile.AppendAllText,则两者都会处理您的打开和关闭状态,以便您稍后再次阅读。