C# 进程无法访问文件';C:\PCLtoMove\print.pcl';因为它正被另一个进程使用。Windows服务

C# 进程无法访问文件';C:\PCLtoMove\print.pcl';因为它正被另一个进程使用。Windows服务,c#,windows-services,filesystemwatcher,C#,Windows Services,Filesystemwatcher,我有一个名为PCLtoMove的文件夹。我已在此文件夹中应用了filewatcherSystem,以将文件从此文件夹移动到另一个文件夹。第一次启动windows服务时,它工作正常,但从下一次开始,它会出现异常- 进程无法访问文件“C:\PCLtoMove\fileName.pcl”,因为另一个进程正在使用该文件 我移动文件的代码是- private void SavionFileWatcher_Created(object sender, System.IO.FileSystemEventAr

我有一个名为PCLtoMove的文件夹。我已在此文件夹中应用了filewatcherSystem,以将文件从此文件夹移动到另一个文件夹。第一次启动windows服务时,它工作正常,但从下一次开始,它会出现异常-

进程无法访问文件“C:\PCLtoMove\fileName.pcl”,因为另一个进程正在使用该文件

我移动文件的代码是-

 private void SavionFileWatcher_Created(object sender, System.IO.FileSystemEventArgs e)
    {
        try
        {
            string sourcePath = e.FullPath;
            string destination = ConfigurationManager.AppSettings["destination"] + e.Name;
            File.Move(sourcePath, destination);

        }
        catch (Exception ex)
        {
            this.EventLog.WriteEntry(ex.Message, EventLogEntryType.Information);
        }

    }

请告诉我我做错了什么。

我通过在上面的代码中添加以下代码得到了解决方案。它确认文件已完全移动或创建

 FileStream fs = new FileStream(sourcePath, FileMode.Open, FileAccess.ReadWrite);
                    fs.ReadByte();
                    fs.Seek(0, SeekOrigin.Begin);
                    fs.Dispose();
                    File.Move(sourcePath,destination);
                       break;

你做错了一件事,就是没有展示你的研究,也没有调试器。阅读我的最佳猜测是:文件创建后立即引发事件,但它仍在写入。@CodeMaster当我通过附加进程调试此windows服务时,它运行正常,但当我取消附加调试程序,文件到达文件夹时,它会在事件记录器中出现上述异常。是的,调试(或您在断点处等待)速度减慢到足以写入并关闭文件的程度。请参阅以了解天真的方法。