Visual Studio 2008 .NET 버전 3.5를 사용하여 C++/CLI 프로그램을 작성합니다.텍스트 파일에 쓰기 및 즉시 사용 가능하게 함 (C++/CLI)
이 프로그램은 COM 포트에서 데이터를 수신합니다. 받은 문자열이 특정 형식이 아닌 경우 프로그램은 해당 줄이있는 오류 메시지를 로그 파일에 출력합니다.
요구 사항 중 하나는 컴퓨터 운영자가 들어 와서 로그 파일을 점검 할 수 있다는 것입니다.
여기 (일종의) 내 프로그램입니다 : 내가 로그 파일의 파일 크기를 확인하는 경우 Flush
의 실행 후
FileStream^fs = File::Create("erorr-log.txt");
StreamWriter^sw = gcnew StreamWriter(fs);
// while receiving data from COM port
// if data is not in expected format
sw->WriteLine("Error in received data");
sw->WriteLine(received_string_data_from_port);
sw->Flush();
sw->Close();
, 그것은 동일하게 유지됩니다. 메모장에서도 열 수 없습니다.
Close
실행 후 파일 크기가 변경되고 메모장에서 열 수 있습니다.
질문 : 내용이 왜 사용할 수 없습니다Flush
후? Flush
즉시 파일을 '업데이트'하지 않아야합니까? 마지막 줄에있는 Log()
의 경우와 마찬가지로 How to: Open and Append to a Log File에?
올바르게 기억하면 Windows에서 쓰기 위해 파일을 열 때 기본적으로 프로세스에만 독점적으로 잠겨 있습니다. 'flush' 호출은 디스크에 기록하지만 파일은 여전히 다른 사람들이 읽을 수 없습니다. 파일을 닫을 때까지는되지 않습니다. 나는 C++ CLI 나 .NET에서 공유 모드로 어떻게 열지 모르겠다. –