私のプログラムはデータをファイルにロギングしていると同時に、ユーザーインターフェイスに着信データを表示します。私は、ログされたデータが、コンピュータ/プログラム/ OS /その他がシャットダウンされた場合、2〜2秒以内にディスクに保存されることを望みます。データは少なくとも100回/秒で到着しています。ファイル名を自分で開く名前を変更
ロギングがアクティブな間にユーザーがログファイルに新しい名前を付けることができるようにします。問題は、同じプロセスであっても、開いている間はファイルの名前を変更できないということです。
テストケース:
string fileName1 = "test.txt";
string fileName2 = "test2.txt";
using (StreamWriter sw = new StreamWriter(new FileStream(fileName1, FileMode.Create)))
{
sw.WriteLine("before");
File.Move(fileName1, fileName2); //<<-- IOException - The process cannot access the file because it is being used by another process.
w.WriteLine("after");
}
を同じプロセスがオープンしたファイルへのストリームを持っている間ので、はどのように私は、プロセスからのファイルの名前を変更できますか?
であっても、あなたが本当にHTTP(log4netのように、ロギングライブラリを試してみてください、あなたがそれを名前を変更できるようになります://logging.apache.org/log4net/)。 –
残念ながら、ファイルを移動したり、名前を変更したり、ストリームを使用しているときにファイルを削除したりすることはできません。別のプログラムが使用している場合と同じです... –