내 프로그램이 파일에 데이터를 로깅하는 동시에 사용자 인터페이스에 들어오는 데이터가 표시됩니다. 나는 기록 된 데이터가 컴퓨터/프로그램/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");
}
그래서, 이 어떻게 프로세스에서 파일의 이름을 변경합니까?
당신은 많은 데이터, 당신은 정말 log4net 같은 로깅 라이브러리 (HTTP를 시도해야 로그인하는 경우 : //logging.apache.org/log4net/). –
유감스럽게도 파일을 이동하거나 이름을 변경하거나 스트림을 사용할 때 파일을 삭제하거나 삭제할 수 없으며 다른 프로그램에서 사용중인 것과 같습니다. –