该进程无法访问文件 'C:\PCLtoMove\print.pcl',因为它正被另一个进程使用。 Windows 服务
The process cannot access the file 'C:\PCLtoMove\print.pcl' because it is being used by another process. Windows service
我有一个名为 PCLtoMove 的文件夹。我在此文件夹中应用了一个 filewatcherSystem 以将文件从该文件夹移动到另一个文件夹。第一次启动 windows 服务时它工作正常,但从下次开始它会出现异常-
The process cannot access the file 'C:\PCLtoMove\fileName.pcl' because it is being used by another process.
我移动文件的代码是-
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;
我有一个名为 PCLtoMove 的文件夹。我在此文件夹中应用了一个 filewatcherSystem 以将文件从该文件夹移动到另一个文件夹。第一次启动 windows 服务时它工作正常,但从下次开始它会出现异常-
The process cannot access the file 'C:\PCLtoMove\fileName.pcl' because it is being used by another process.
我移动文件的代码是-
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;