0

我正在尝试使用 FileInfo 对象创建一个文件,但我遇到了奇怪的行为。

这是我正在做的事情的要点 -

    public void CreateLog()
    {
        FileInfo LogFile = new FileInfo("");

        if (!LogFile.Directory.Exists) { LogFile.Directory.Create(); }
        if (!LogFile.Exists) { LogFile.Create(); }

        if (LogFile.Length == 0)
        {
            using (StreamWriter Writer = LogFile.AppendText())
            {
                Writer.WriteLine("Quotes for " + Instrument.InstrumentID);
                Writer.WriteLine("Time,Bid Size,Bid Price,Ask Price,Ask Size");
            }
        }
    }

但是,当它检查日志文件的长度时,它说该文件不存在(我检查过 - 它确实存在)。

当我用以下内容替换 LogFile.Length 时:

    File.ReadAllLines(LogFile.FullName).Length;

然后我得到一个异常,说它无法访问该文件,因为其他东西已经在访问它。

但是,如果我在执行 ReadAllLines 之前执行 Thread.Sleep(500),那么它似乎工作正常。

我错过了什么?

4

1 回答 1

0

LogFile.Create() 如果你使用这个函数,你可以锁定文件,所以你可以使用 using ,像这样
using(LogFile.Create()){}

之后您可以再次使用该文件

于 2012-07-11T14:12:29.057 回答