의 여러 인스턴스에서 파일로 올바른 방법으로?쓰기 텍스트 프로그램
답변
는 항상 using
문
using(TextWriter tw2 = File.AppendText(@"C:\logs\log.txt"))
{
tw2.WriteLine(Environment.NewLine);
tw2.WriteLine(DateTime.Now + " " + "IN INFOSERVCALLER");
//tw2.Flush(); // No need to flush because close alway flush.
}
using
문은 블록의 끝에서 tw2.Close()를 호출에 이러한 종류의 코드를 캡슐화합니다.
블록 내부에서 예외가 발생하는 경우에도 마찬가지입니다.
은 이제 응용 프로그램의 다른 인스턴스가 어떤 이유로 실패 할 경우, 파일은 더 이상 여러 프로세스에서 로그 파일에 대한 액세스를 동기화하는
암시 적 클로즈가 스트림을 플러시하기 때문에 플러시가 필요하지 않습니다. – Polyfun
'Close'도 'using'도 예외가 발생하는 것을 막지 않으며 예외의 확률을 감소시킵니다. 동시에 여러 프로그램 인스턴스가 동시에 로그 파일을 열려고 시도 할 가능성이 있습니다. 파일에 대한 액세스는 뮤텍스와 같은 적절한 동기화 프리미티브와 동기화되어야합니다. –
@ 예외가 발생하지만 예외가 발생하지만 파일을 올바르게 닫은 다음 다른 프로세스가 잠긴 상태에서 파일을 사용할 수 있습니다 (플러시, 사용자 및 ShellShock이 맞으면 복사 붙여 넣기 :). – Steve
Flushing 외에도 Close()
파일을 사용해야합니다. 다른 인스턴스가 동시에 파일을 작성하면 다른 프로그램이 Close()
를 호출 할 때까지
게다가, 당신은 (그것을 액세스 할 수 없습니다.
Closes the current instance of writer and releases any system resources associated with the writer
을이 경우 "시스템 자원은 "당신이 그것을 닫을 때까지 잠겨 보관하는 파일을 의미합니다.
당신은 각각의 시간을 닫을 필요하면 텍스트 작가와 열린 파일.
그래서 각 작업 후 사용
// create a writer and open the file
TextWriter tw2 = File.AppendText(@"C:\logs\log.txt");
// write a line of text to the file
tw2.WriteLine(Environment.NewLine);
tw2.WriteLine(DateTime.Now + " " + "IN INFOSERVCALLER");
tw2.Flush();
tw2.Close();
그 후에 다시 어떤 문제를 만들지 않으려 고합니다.
사용 Mutex 클래스를 고정하지 않습니다. 파일을 열기 전에 WaitOne으로 전화하고 파일을 닫은 후에 ReleaseMutex으로 전화하십시오 (플러시만으로 충분하지 않습니다. 다른 답변과 마찬가지로 키워드를 사용하여 파일을 닫거나 포장해야합니다). 뮤텍스 이름은 접두어 "Global \"로 시작해야합니다.
- 1. 쓰기 텍스트
- 2. 텍스트 파일에 텍스트 상자 쓰기
- 3. 텍스트 필드 텍스트 들여 쓰기
- 4. JS로 텍스트 쓰기
- 5. Matlab의 텍스트 파일에 쓰기
- 6. WP7의 이미지에 텍스트 쓰기
- 7. 출력을 텍스트 파일에 쓰기
- 8. 파워 포인트에 텍스트 쓰기 #
- 9. 서식있는 텍스트 상자에 쓰기.
- 10. HTML의 텍스트 파일에 쓰기
- 11. PHP에서 텍스트 파일에 쓰기
- 12. HTML에서 텍스트 들여 쓰기
- 13. 선택한 영역에 텍스트 쓰기
- 14. PowerShell : 텍스트 파일에 쓰기
- 15. 스레드에 텍스트 파일 쓰기
- 16. Java의 텍스트 파일에 쓰기
- 17. 손가락으로 ipad에 텍스트 쓰기
- 18. 자바 쓰기 로그에 텍스트
- 19. 텍스트 파일 쓰기
- 20. jpeg에 투명 텍스트 쓰기
- 21. 들여 쓰기 접기 텍스트
- 22. Powershell - 텍스트 파일에 쓰기
- 23. 이미지에 텍스트 쓰기
- 24. 온라인으로 텍스트 쓰기/읽기
- 25. android의 탭에 텍스트 쓰기
- 26. 파일에 UTF8 텍스트 쓰기
- 27. 텍스트 파일에 데이터 쓰기
- 28. 텍스트 파일의 특정 지점에 텍스트 쓰기 C#
- 29. 텍스트 상자에서 텍스트 파일로 데이터 쓰기
- 30. IE에서 텍스트 상자의 텍스트 들여 쓰기
파일이 처음 사용되는지 확인해보십시오.이 답변보기 http://stackoverflow.com/a/937558/799586 –
@BaliC : 파일이 잠겨 있는지 처음 검사 할 때 유일한 문제는 여전히 확인한 시간과 열어 본 시간 사이에 잠겨 있습니다. 파일에 쓰고 예외가 발생하면 catch하는 것이 좋습니다. 그런 다음 나중에 다시 시도하십시오. –