C#Windows服务未正确压缩文件夹

C#Windows服务未正确压缩文件夹,c#,windows-services,compression,directory,C#,Windows Services,Compression,Directory,Im当前正在构建一个Windows服务,该服务将用于创建日志备份。目前,日志存储在路径E:\logs中,目的是复制内容,给新文件夹加上时间戳并对其进行压缩。在这之后,您应该有E:\Logs和E:\Logs\uu[Timestamp].zip。zip将移动到C:\Backups\以供以后处理。目前,我正在使用以下方法尝试压缩日志文件夹: var logDirectory = "E://Logs"; var timeStamp = DateTime.Now.ToString("yyyyMMddHHm

Im当前正在构建一个Windows服务,该服务将用于创建日志备份。目前,日志存储在路径
E:\logs
中,目的是复制内容,给新文件夹加上时间戳并对其进行压缩。在这之后,您应该有
E:\Logs
E:\Logs\uu[Timestamp].zip。zip将移动到C:\Backups\以供以后处理。目前,我正在使用以下方法尝试压缩日志文件夹:

var logDirectory = "E://Logs";
var timeStamp = DateTime.Now.ToString("yyyyMMddHHmm");
var zippedFolder = logDirectory + "_" + timeStamp + ".zip"; 

System.IO.Compression.ZipFile.CreateFromDirectory(logDirectory, zippedFolder); 
虽然这似乎创建了一个zip文件夹,但出现了错误
Windows无法打开该文件夹。压缩(压缩)文件夹E:\Logs\u 201805161035.zip无效。

为了解决任何疑难解答问题,服务正在使用具有足够权限级别的AD帐户运行,以执行管理任务。另一个需要考虑的是,当它的文件系统监视器在路径<代码> C:\Copys中检测到一个新的ZIP文件夹时,服务就会启动。由于有许多zip文件夹一次添加到
C:\Aggregate
,因此FileSystemWatcher会为找到的每个zip创建一个新任务。您可以在以下内容中看到其工作原理:

    private void FileFoundInDrops(object sender, FileSystemEventArgs e)
    {          
        var aggregatePath = new DirectoryInfo("C://Aggregate"); 

        if (e.FullPath.Contains(".zip"))
        {
            Task task = Task.Factory.StartNew(() =>
            {
                try
                {
                    var logDirectory = "E://Logs";
                    var timeStamp = DateTime.Now.ToString("yyyyMMddHHmm");
                    var zippedFolder = logDirectory + "_" + timeStamp + ".zip"; 
                    ZipFile.CreateFromDirectory(logDirectory, zippedFolder);                       
                }
                catch (Exception ex)
                {
                    Log.WriteLine(System.DateTime.Now.ToString() + " - ERROR: " + ex);
                }
            });

            task.Dispose();
        }           
    }

我怎样才能避免收到的错误?任何帮助都将不胜感激

猜测一下:因为每个zip文件都会调用
FileSystemWatcher
事件处理程序,并且会在聚合文件夹中同时创建多个zip文件。您的问题可能是由冲突的
日志\u yyyyMMddHHmm.zip
文件名引起的。(同一时间,同一分钟)我听从了你的建议,使用了前面提到的格式,但一直测量到检测到zip的那一秒。现在,备份有不同的名称,但它们仍然提示相同的错误。@alxsj:如果我删除行Task Task=Task.Factory.StartNew(()=>…是否有任何理由在FileSystemWatcher中不起作用?