5 / 5 / 2
Регистрация: 04.04.2013
Сообщений: 44
|
||||||
1 | ||||||
.NET 4.x Служба backup'a файла при перезаписи файла31.05.2016, 20:55. Показов 1521. Ответов 5
Метки нет (Все метки)
Доброго времени суток.
Появилась задача резервного копирования файла, которое должно происходить при перезаписи файла. Простое приложение работает на ура, но было решено написать Windows-службу т.к. копирование происходит на сервере. И тут возникла проблема: служба завершает свою работу когда доходит до копирования. Пробую на ОС Win7 x64 Подскажите, что может быть за косяк:
0
|
31.05.2016, 20:55 | |
Ответы с готовыми решениями:
5
Внесение изменений в XML без перезаписи всего файла Создание (сохранение) файла без перезаписи с добавлением цифры к имени файла Даны два текстовых файла. Добавить в конец первого файла содержимое второго файла Даны два текстовых файла. Добавить в начало первого файла содержимое второго файла |
Master of Orion
|
|
01.06.2016, 00:13 | 2 |
Сообщение было отмечено mcSHLANG как решение
Решение
mcSHLANG, SetServiceStatus и все связанное с этим вообще ни к чему. Почитайте статью, все это делается намного проще. Сломаться может как раз из-за этого, т.к. если сервису туда-сюда статусы рандомно менять, что-нибудь может отвалиться.
Еще стоит посмотреть, от кого запущен процесс. Возможно проблемы с правами, нужно в таких случаях либо логи писать, либо под дебаггером сидеть. Добавлено через 6 минут ну и да, FileSystemWatcher должен быть полем класса, иначе сборщик его убьет и на этом его славная работа закончится. Добавлено через 1 минуту Таймер тоже бесполезный. Если сервис запущен, и так понятно, что он работает. Лучше пишите в лог, когда файл обрабатываете, что типа "такой-то файл пытаюсь обработать". Console.WriteLine("File: " + e.FullPath + " " + e.ChangeType); вообще ни к чему, у сервиса нет потока вывода, только логи. Добавлено через 1 минуту Ну и лично мое мнение, что бэкап должен сохранять имя оригинального файла, а не затирать его меткой времени
1
|
5 / 5 / 2
Регистрация: 04.04.2013
Сообщений: 44
|
||||||
01.06.2016, 23:28 [ТС] | 3 | |||||
Psilon, благодарю.
Залогировал все действия, и сразу все стало понятно. Дело было в имени для нового файла, но предварительно удалил SetServiceStatus. Может быть кому пригодиться, рабочий вариант:
0
|
Master of Orion
|
|
01.06.2016, 23:47 | 4 |
mcSHLANG, все связанное с инициализацией лучше в конструктор убрать. А то у вас после 3 перезапусков сервиса каждый файл будет по 3 раза копироваться. Вы ведь подписываетесь на событие, а отписки никакой нет. Если это происходит один раз, то ничего страшного, а вот то что это в onstart происходит плохо.
0
|
5 / 5 / 2
Регистрация: 04.04.2013
Сообщений: 44
|
||||||
26.07.2016, 14:24 [ТС] | 5 | |||||
Psilon, благодарю.
Залогировал все действия, и сразу все стало понятно. Дело было в имени для нового файла, но предварительно удалил SetServiceStatus. Может быть кому пригодиться, рабочий вариант:
0
|
6452 / 4053 / 1599
Регистрация: 09.05.2015
Сообщений: 9,487
|
|
26.07.2016, 14:29 | 6 |
0
|
26.07.2016, 14:29 | |
26.07.2016, 14:29 | |
Помогаю со студенческими работами здесь
6
Ошибка при передаче файла по FTP "Недопустимое имя файла" В чем ошибка при перезаписи файла? Учитывать пробелы и табуляции при перезаписи файла Избавление от перезаписи файла при запуске программы Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |