Форум программистов, компьютерный форум, киберфорум
Наши страницы
C# для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.89/9: Рейтинг темы: голосов - 9, средняя оценка - 4.89
BazZile
10 / 10 / 4
Регистрация: 12.03.2015
Сообщений: 93
1

Отслеживание изменения файла

16.09.2016, 14:45. Просмотров 1824. Ответов 5
Метки нет (Все метки)

Не могу разобраться, почему при отслеживании изменений в файле происходит двойной вызов.
Вот код логгера, который отслеживает изменение (стартую его в отдельном потоке):
Кликните здесь для просмотра всего текста

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
public class Logger
        {
            private FileSystemWatcher _watcher;
            private bool _enabled = true;
            
            public Logger()
            {
                _watcher = new FileSystemWatcher("C:\\Temp");
                _watcher.Filter = "log.txt";
                _watcher.Changed += Watcher_Changed;
            }
 
            public void Start()
            {
                _watcher.EnableRaisingEvents = true;
                while (_enabled)
                {
                    Thread.Sleep(1000);
                }
            }
 
            public void Stop()
            {
                _watcher.EnableRaisingEvents = false;
                _enabled = false;
            }
 
            private void Watcher_Changed(object sender, FileSystemEventArgs e)
            {
                RecordEntry();
            }
 
            private void RecordEntry()
            {
                Process proc = new Process();
                proc.StartInfo.FileName = @"C:\Program Files\AIMP3\AIMP3.exe";
                proc.StartInfo.Arguments = "/PLAY";
                proc.Start();
            }
        }

То есть, если что-либо изменилось, то запускается дважды. Помогите разобраться
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
16.09.2016, 14:45
Ответы с готовыми решениями:

Отслеживание изменения переменной
Здравствуйте! Вопрос немного ламерский. Есть trackBar. Есть значение переменной, допустим, а....

Отслеживание изменения DataGridViewComboBoxCell
Добый день. Начал изучать С# и столкнулся с одной проблеймой. Есть таблица DataViewGrid, в которую...

Отслеживание изменения значения переменной
Как мне сделать так, что бы при изменении переменной, выполнялась функция из другого класса и после...

Отслеживание изменения значения переменной
Привет! Возникла такая задача - есть адрес переменной в памяти какого-то процесса. Мне нужно...

Отслеживание программного изменения положения курсора
Добрый день. Как можно, да и можно ли вообще узнать, указатель переместился с помощью мыши, или его...

5
Даценд
Модератор
Эксперт .NET
4787 / 4252 / 2780
Регистрация: 20.04.2015
Сообщений: 7,708
16.09.2016, 16:53 2
Цитата Сообщение от BazZile Посмотреть сообщение
почему при отслеживании изменений в файле происходит двойной вызов.
Особенности работы блокнота или другой программы, сохраняющей изменения в файле.
Попробуйте так:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
private void Watcher_Changed(object sender, FileSystemEventArgs e)
{
    try
    {
        RecordEntry();
        _watcher.EnableRaisingEvents = false; //отключаем слежение
    }
 
    finally
    {
        _watcher.EnableRaisingEvents = true; //переподключаем слежение
    }
}
И еще. Зачем вешать программу вечной паузой в методе Start?
Оставьте только:
C#
1
2
3
4
public void Start()
{
    _watcher.EnableRaisingEvents = true;
}
1
BazZile
10 / 10 / 4
Регистрация: 12.03.2015
Сообщений: 93
16.09.2016, 21:20  [ТС] 3
Даценд, спасибо! Попробую.
0
BazZile
10 / 10 / 4
Регистрация: 12.03.2015
Сообщений: 93
18.09.2016, 11:19  [ТС] 4
Еще вопрос: что надо сделать чтобы не происходило гонки ресурсов за файл, за которым осуществляется слежение? Если в него с частой периодичностью записываются логи из другой программы?
0
Даценд
Модератор
Эксперт .NET
4787 / 4252 / 2780
Регистрация: 20.04.2015
Сообщений: 7,708
18.09.2016, 12:50 5
BazZile,
Гонки нет. FileSystemWatcher не следит непосредственно за файлом, а ждет сообщений от ОС об изменении файла.
0
BazZile
10 / 10 / 4
Регистрация: 12.03.2015
Сообщений: 93
20.09.2016, 07:47  [ТС] 6
Даценд, спасибо. Проблема оказалась в Putty.
0
20.09.2016, 07:47
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
20.09.2016, 07:47

Отслеживание изменения значения свойства класса
Доброго всем времени суток! Есть некий класс, которых хранит свойства в виде class SomeClass {...

Отслеживание изменения файлов.
Подскажите пожалуйста, как можно отследить время изменения файлов в папке, учитывая, что их там...

Защита файла от изменения
как сделать что, если создаешь текстовой файл , был зашишон, можно было изменить только через код,...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru