C # ZipArchive Перерывы ссылок WIndows Service TImer - PullRequest
0 голосов
/ 26 июня 2018

Я новичок здесь и новичок в C #. Я работаю в ритейлере и до этого года застрял в Visual Studio 6, но теперь я самоучка на C # и переписываю все, что я делал за последние 21 год. Разве ты не хочешь, чтобы ты был мной? : {

В любом случае, у меня есть служба Windows, которая периодически выполняет серию заданий, которые создают файлы. Когда эти задания завершаются, служба создает из них zip-файл и уведомляет корпоративный сервер о сборе и удалении zip-файла. Я боролся с этим сервисом уже пару дней, потому что событие таймера не сработало. Поэтому я сократил его до чистого металла - таймера и обработчика событий - и это сработало. Затем я начал постепенно добавлять обратно в рабочий код, пока не сузился до раздела кода, который вызывает проблему. Это вызов ZipArchive. Все работает, пока я не раскомментирую следующий код, а именно блок «using (var archive ...))»

var transmissionFiles = Directory.GetFiles( _uploadDirectory, "*.trx" );
if (transmissionFiles.Length > 0)
{
    using (var zipfile = new FileStream( $"{_uploadDirectory}zp" +
        $"{DateTime.Now:yyyyMMdd}.{_storeNumber:D4}.{DateTime.Now:HHmmss}", FileMode.Open ))
    {
        using (var archive = new ZipArchive( zipfile, ZipArchiveMode.Update ))
        {
            foreach (var tFile in transmissionFiles)
            {
                archive.CreateEntry( tFile );
                File.Delete( tFile );
            }
        }
    }
}

Любая помощь приветствуется.

Ответы [ 2 ]

0 голосов
/ 26 июня 2018

Решено путем перемещения ссылок ZipArchive в отдельный метод. Что-то в том, что эти вызовы в обработчике событий таймера не работают. Weird

0 голосов
/ 26 июня 2018

Используйте CreateFromDirectory(String, String) для архивирования каталога

MSDN

...