我们在一台计算机上运行我们程序的几个实例(c#)。 在每个实例中,我们的代码尝试在方法Path.GetTempFile()的帮助下创建“许多”临时文件。 有时,我们的程序会失败,但有例外:
Exception: Access to the path is denied.
StackTrace: at System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath)
at System.IO.Path.GetTempFileName()
我检查了临时文件夹并没有发现奇怪的东西:免费磁盘就足够了,临时文件数量不是很大等等。
我只有一个解释:一个实例获取临时文件并打开它,但同时,另一个实例也获取临时文件的名称并尝试打开它。 如果是对的? 如果是,如何解决问题,如果不是如何理解什么问题?
UPD: 在 Windows Server 2008 HPC
的计算机上失败谢谢你, 伊戈尔。
答案 0 :(得分:4)
Path
类的msdn个州:
此类型的任何公共静态(在Visual Basic中为Shared)成员都是线程安全的。
Furthermore给出IO异常有两个原因:
如果GetTempFileName方法用于创建超过65535个文件而不删除以前的临时文件,则会引发IOException。
如果没有唯一的临时文件名可用,GetTempFileName方法将引发IOException。要解决此错误,请删除所有不需要的临时文件。
我建议检查这些条件(因为您明确声明您创建了许多临时文件)。
答案 1 :(得分:4)