Моя программа записывает данные в файл, в то же время пользовательский интерфейс отображает поступающие данные в режиме реального времени.Я хочу, чтобы зарегистрированные данные были на диске в течение одной или двух секунд, если компьютер / программа / ОС / что-либо выключается.Данные поступают как минимум 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");
}
Итак, Как переименовать файл из процесса, когда тот же процесс имеет поток для открытия файла?