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(LogFile.Create()){}

その後、ファイルを再び使用できます

于 2012-07-11T14:12:29.057 に答える