Я создал решение для файловой системы Watcher, и я бы хотел получить изменения, внесенные в файл журнала, извлекая только добавленную строку, но Я не могу в этом, потому что всегда ошибаюсь, что процесс не может получить доступ к файлу, потому что он используется другим процессом. Мой код это для получения добавленной линии заключается в следующем:Процесс не может получить доступ к файлу, потому что он используется другим процессом, когда я считаю
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