파일 시스템 감시자 솔루션을 작성했으며 추가 된 행만 추출하여 로그 파일의 변경 사항을 검색하지만 왜냐하면 프로세스가 다른 프로세스에서 사용 중이기 때문에 프로세스가 파일에 액세스 할 수 없다는 오류가 항상 있기 때문입니다. FileStream
파일을 고정하기 때문에,내가 카운트 할 때 다른 프로세스에서 사용 중이기 때문에 프로세스가 파일에 액세스 할 수 없습니다.
using (var file = new FileStream(FileName,
FileMode.Open,
FileAccess.Read,
FileShare.Read))
using (var sr = new StreamReader(file))
{
try
{
Thread thread = new Thread(delegate()
{
listBox1.Invoke((MethodInvoker)(() =>
{
listBox1.Items.Clear();//this is the listbox that list every added line and that I clear before of to be filled
string[] lines = File.ReadLines(fileName)
.Skip(LinecountStartPositionBUFF)
.Take(LinecountEndPosition - LinecountStartPositionBUFF)
.ToArray();
listBox1.Items.AddRange(lines);
}));
});
thread.Start();
while (thread.IsAlive)
Application.DoEvents();
}
catch
{ }
return sr.ReadLine();
}
더 이상 이동하기 전에 컨트롤의 이름을 변경하십시오. ('listbox1'은 ** 좋은 명명 규칙이 아닙니다 **). BTW도 빈'catch {}'블록을 사용하고 있지 않습니다. – jbutler483
문제와 관련이 없지만 예외를 삼키는 것은 나쁜 습관입니다. catch 블록에 핸들을 추가하십시오. – apomene
적절한 구현 방법은 [텍스트 파일의 마지막 라인 읽기] (http://stackoverflow.com/questions/11625595/read-last-line-of-text-file)를 참조하십시오. 코드에 많은 문제가 있습니다. – CodeCaster