У меня есть приложение, которое проверяет текстовый файл на наличие новых записей (строк), чтобы обработать их и вывести результат в richtextbox.После изменения проверки файла с простого цикла на FileSystemWatcher, он останавливает промежуточное выполнение безо всякой причины.
Я попытался установить точки останова и пошагово пройти код, установив блоки try-catch с помощьюне повезло.
Настройка FileSystemWatcher:
FileSystemWatcher fileSystemWatcher = new FileSystemWatcher();
fileSystemWatcher.Path = (logfile_path.Substring(0, logfile_path.Length-14));
fileSystemWatcher.NotifyFilter = NotifyFilters.LastWrite;
fileSystemWatcher.Filter = "iCCard_Log.log";
fileSystemWatcher.Changed += new FileSystemEventHandler(FileSystemWatcher_Changed);
fileSystemWatcher.EnableRaisingEvents = true;
private void FileSystemWatcher_Changed(object sender, FileSystemEventArgs e)
{
Checklog(); //calls a long part, which ends in Checkmain()
}
Проблема представлена в этой строке:
private void Checkmain()
{
RichTextBoxExtensions.AppendText_Error(errorBox, Environment.NewLine + "INFO: " + name + " - " + logline + " - " + firstclassstart_time.ToString(), Color.Red);
....
}
AppendText_Error:
public static class RichTextBoxExtensions
{
public static void AppendText_Error(this RichTextBox box, string text, Color color)
{
box.SelectionStart = box.TextLength; //stops here
box.SelectionLength = 0;
box.SelectionColor = color;
box.AppendText(text);
box.SelectionColor = box.ForeColor;
}
}
Существует такжеthis:
private void errorBox_TextChanged(object sender, EventArgs e)
{
errorBox.SelectionStart = errorBox.Text.Length;
errorBox.ScrollToCaret();
}
Код останавливается на box.SelectionStart = box.TextLength;
Если я вернусь к методу цикла, который вызывает точно такие же вещи, он работает отлично (записывает строку результата вrichtextbox, а также записывает его в TXT).Если начальная точка - это файловая система, она просто остановится на указанной строке, ничего не делая.
Когда программа запускается, она запускает весь процесс один раз, чтобы проверить, работают ли некоторые анализаторы, и не останавливается и корректнодает ожидаемый результат, даже если он вызывается диспетчером файловой системы при запуске.Если он снова активируется для фактической обработки, он не будет работать во второй раз.