我有一个正在处理文件的Windows服务。我们最近将框架升级到4.5。大约在这个时候,我们发现错误通常会导致错误 'System.IO.IOException:进程无法访问文件'D:\ Edata \ 29987082_CREDITNOTE.XML',因为它正由另一个进程使用。
当处理仅约30%时,这种情况不会一直发生。该服务使用FileInfo对象作为文件路径,然后使用File.Move更新名称。然后它使用新文件名重用FileInfo变量。几行后,它尝试用File.OpenRead打开文件并获取错误。
我见过使用FileInfo.MoveTo的类似帖子。我不确定这是否有帮助。我想知道导致错误的原因。
以下是相关代码。 fileToProcess是FileInfo
string DestPath = Path.GetDirectoryName(fileToProcess.FullName);
newpath = string.Format("{0}\\{1}_{2}", DestPath, transmissionid, Path.GetFileName(name));
File.Move(fileToProcess.FullName, newpath);
fileToProcess = new FileInfo(newpath);
LogWriter.Current.WriteLog(LogSeverityType.Info, "Info", string.Format("Tran {0}: Entering CreateCopy method", transmissionID), transmissionID); //This log get written fine
fileToProcess_Stream = File.OpenRead(fileToProcess.FullName);