C#ZipArchive参考打破了Windows Service TImer

时间:2018-06-26 18:12:53

标签: c# windows service ziparchive

我是这里的新手,也是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 :(得分:0)

使用CreateFromDirectory(String, String)来归档目录

MSDN

答案 1 :(得分:0)

通过将ZipArchive引用移动到单独的方法来解决。关于在计时器事件处理程序中进行这些调用的操作不起作用。奇怪