Форум программистов, компьютерный форум, киберфорум
C# Windows Forms
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.75/4: Рейтинг темы: голосов - 4, средняя оценка - 4.75
0 / 0 / 0
Регистрация: 05.10.2017
Сообщений: 86

Слежение за папкой перестает работать

10.08.2018, 05:54. Показов 820. Ответов 9

Студворк — интернет-сервис помощи студентам
Доброго времени суток!
Есть программа, которая следит за общей папкой на сервере, когда в эту папку падает программа срабатывает событие, все работает хорошо, но если в эту папку долгое время не падает файл, например, ночью, а утром файл в папку попадет, то программа уже не отрабатывает просто висит и все. Кто-то может быть знает почему так?
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
10.08.2018, 05:54
Ответы с готовыми решениями:

Глобальный хук перестает работать
Всем привет, проблема: есть глобальный хук, он отслеживает какую кнопку я нажал, и если я нажал определенную клавишу то выполняется метод...

Не могу разобраться с папкой Desktop и скрытой папкой Public Desktop
Я хочу получить возможность взаимодействия с ярлыками. Одни ярлыки находятся по адресу c:\users\user\Desktop и к ним претензий нет. Но есть...

При вторичном запуске программа перестает работать
Доброго всем времени суток! Очень нужна помощь! Сам в программировании не силен, только-только начал, решил составить программу для...

9
Эксперт .NET
 Аватар для Rius
13228 / 7725 / 1679
Регистрация: 25.05.2015
Сообщений: 23,545
Записей в блоге: 14
10.08.2018, 06:02
Цитата Сообщение от deskindom3 Посмотреть сообщение
Кто-то может быть знает почему так?
Ошибка в программе.
Берите код и исправляйте.
Или пишите заново.
0
0 / 0 / 0
Регистрация: 05.10.2017
Сообщений: 86
10.08.2018, 06:05  [ТС]
Цитата Сообщение от Rius Посмотреть сообщение
Ошибка в программе.
Берите код и исправляйте.
Или пишите заново.
Как может быть ошибка в программе, если весь день она работает идеально, а утром, после ночи, не работает, пока не перезапустишь?
0
Эксперт .NET
 Аватар для Rius
13228 / 7725 / 1679
Регистрация: 25.05.2015
Сообщений: 23,545
Записей в блоге: 14
10.08.2018, 06:10
Элементарно, Уотсон.
0
0 / 0 / 0
Регистрация: 05.10.2017
Сообщений: 86
10.08.2018, 06:12  [ТС]
Цитата Сообщение от Rius Посмотреть сообщение
Элементарно, Уотсон.
Тогда наведите на мысль, почему так может быть?
0
Эксперт .NET
 Аватар для Rius
13228 / 7725 / 1679
Регистрация: 25.05.2015
Сообщений: 23,545
Записей в блоге: 14
10.08.2018, 06:15
Ошибка в программе.
Хотя, конечно, могу кофий заварить, погадать... Без исходников только и остаётся...

Добавлено через 1 минуту
Например, сервер ночью перезагружается и следящая прога теряет связь с отслеживаемым каталогом. Т.к. настраивается она на него только при запуске.
0
0 / 0 / 0
Регистрация: 05.10.2017
Сообщений: 86
10.08.2018, 06:19  [ТС]
Цитата Сообщение от Rius Посмотреть сообщение
Хотя, конечно, могу кофий заварить, погадать... Без исходников только и остаётся...
Обычный стандартный код

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
    class Logger
    {
        FileSystemWatcher watcher;
        object obj = new object();
        bool enabled = true;
        public Logger()
        {
            
            watcher = new FileSystemWatcher(Data.str); 
            watcher.Deleted += Watcher_Deleted;
            watcher.Created += Watcher_Created;
            watcher.Changed += Watcher_Changed;
            watcher.Renamed += Watcher_Renamed;
        }
 
        public void Start()
        {
            watcher.EnableRaisingEvents = true;
            while (enabled)
            {
                Thread.Sleep(300);
            }
        }
        public void Stop()
        {
            watcher.EnableRaisingEvents = false;
            enabled = false;
        }
              
        // создание файлов
        private void Watcher_Created(object sender, FileSystemEventArgs e)
        {
            string filePath = e.FullPath;
            string ds = Path.GetFileNameWithoutExtension(filePath);
            Data.sad = File.GetCreationTime(filePath);
            userlogin(ds);
            
        }
}
в мейне вызываю в отдельном потоке:

C#
1
2
3
logger = new Logger();
Thread loggerThread = new Thread(new ThreadStart(logger.Start));
loggerThread.Start();
0
187 / 100 / 19
Регистрация: 15.09.2011
Сообщений: 801
10.08.2018, 06:27
deskindom3, реально, если сам не сталкивался, то трудно что-то порекомендовать. Нужно глянуть системные журналы, попытаться отловить время, когда перестаёт отслеживать Watcher. Придумать тесты - засовывать файл каждый час и следить, что Watcher сработал. Если проблема внутри самого Watchera, то можно тупо(для начала) перезапускать его каждый час - неизвестно, почему не срабатывает - это не решение проблемы - надо тестировать. Сделать логи, возможно, что-то меняется в состоянии Watcherа - есть у него же события с ошибками. Возможно обрывается соединение по сети, возможно, комп засыпает, например.
Возможно, это вам поможет https://www.codeguru.com/cshar... orking.htm
Вообще, не стесняйтесь искать информацию на английском языке - в программировании это очень важно.
https://stackoverflow.com/ques... le-changes
Народ рекомендует его перезапускать через определённые промежутки.
Можно попробовать в том же потоке вызвать метод WaitForChanged, и ждать ошибку в OnError.
0
Эксперт .NET
 Аватар для Rius
13228 / 7725 / 1679
Регистрация: 25.05.2015
Сообщений: 23,545
Записей в блоге: 14
10.08.2018, 06:34
Добавьте
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
 watcher.Renamed += Watcher_Renamed;
 watcher.Error += new ErrorEventHandler(Watcher_Error);
}
 
private void Watcher_Error(object source, ErrorEventArgs e)
{
    if (e.GetException().GetType() == typeof(InternalBufferOverflowException))
    {
        textboxResults.Text += "Error: File System Watcher internal buffer overflow at " + DateTime.Now + "\r\n";
    }
    else
    {
        textboxResults.Text += "Error: Watched directory not accessible at " + DateTime.Now + "\r\n";
    }
}
и понаблюдайте.

И зачем вам поток?

Код обработчиков событий не показан. Код, выполняемый там, должен выполняться мгновенно.
0
907 / 664 / 318
Регистрация: 23.10.2016
Сообщений: 1,543
10.08.2018, 16:40
Как вариант, кто-то ночью удаляет папку слежения в корзину, а вместо неё создаёт новую с таким же именем.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
10.08.2018, 16:40
Помогаю со студенческими работами здесь

При добавлении кнопки на форму, программа перестает работать
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using...

При добавлении SoundPlayer перестает работать обработчик клавиатуры
Во общем чудеса какие-то,без добавления SoundPlayer обработчик текущего состояния NumLock и остальных клавиш работает,и в метке отображает...

При подключении ReportViewer перестает работать на другом комьютере
Проект разрабатываю на своем компьютере, потом exe модуль переношу на другие компьютеры. Все было нормально пока не стал использовать...

При добавлении кнопки на форму перестает работать обработчик клавиатуры
Как только добавляю кнопку на форму перестает работать обработчик от клавиатуры в чем проблема? using System; using...

Программа по отправке почты при переносе на сервер перестает работать
Посылаю почту через SMTP. У меня на компе все работает, ставлю программу на сервер, получаю ошибку "Failure sending mail". Как...


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

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Новые блоги и статьи
10 пpимет, которые всегда сбываются
Maks 31.03.2026
1. Чтобы, наконец, пришла маршрутка, надо закурить. Если сигарета последняя, маршрутка придет еще до второй затяжки даже вопреки расписанию. 2. Нaдоели зима и снег? Не надо переезжать. Достаточно. . .
Перемещение выделенных строк ТЧ из одного документа в другой
Maks 31.03.2026
Реализация из решения ниже выполнена на примере нетипового документа "ВыдачаОборудованияНаСпецтехнику" с единственной табличной частью "ОборудованиеИКомплектующие" разработанного в конфигурации КА2. . . .
Functional First Web Framework Suave
DevAlt 30.03.2026
Sauve. IO Апнулись до NET10. Из зависимостей один пакет, работает одинаково хорошо как в режиме проекта так и в интерактивном режиме. из сложностей - чисто функциональный подход. Решил. . .
Автоматическое создание документа при проведении другого документа
Maks 29.03.2026
Реализация из решения ниже выполнена на нетиповых документах, разработанных в конфигурации КА2. Есть нетиповой документ "ЗаявкаНаРемонтСпецтехники" и нетиповой документ "ПланированиеСпецтехники". В. . .
Настройка движения справочника по регистру сведений
Maks 29.03.2026
Решение ниже реализовано на примере нетипового справочника "ТарифыМобильнойСвязи" разработанного в конфигурации КА2, с целью учета корпоративной мобильной связи в коммерческом предприятии. . . .
Автозаполнение реквизита при выборе элемента справочника
Maks 27.03.2026
Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. При выборе "Спецтехники" (Тип Справочник. Спецтехника), заполняется. . .
Сумматор с применением элементов трёх состояний.
Hrethgir 26.03.2026
Тут. https:/ / fips. ru/ EGD/ ab3c85c8-836d-4866-871b-c2f0c5d77fbc Первый документ красиво выглядит, но без схемы. Это конечно не даёт никаких плюсов автору, но тем не менее. . . всё может быть. . .
Автозаполнение реквизитов при создании документа
Maks 26.03.2026
Программный код из решения ниже размещается в модуле объекта документа, в процедуре "ПриСозданииНаСервере". Алгоритм проверки заполнения реализован для исключения перезаписи значения реквизита,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru