MultiProcessing中的Path.GetTempFileName

时间:2010-07-15 12:26:12

标签: c# multiprocessing

我们在一台计算机上运行我们程序的几个实例(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

的计算机上失败

谢谢你, 伊戈尔。

2 个答案:

答案 0 :(得分:4)

Path类的

msdn个州:

  

此类型的任何公共静态(在Visual Basic中为Shared)成员都是线程安全的。

Furthermore给出IO异常有两个原因:

  1. 如果GetTempFileName方法用于创建超过65535个文件而不删除以前的临时文件,则会引发IOException。

  2. 如果没有唯一的临时文件名可用,GetTempFileName方法将引发IOException。要解决此错误,请删除所有不需要的临时文件。

  3. 我建议检查这些条件(因为您明确声明您创建了许多临时文件)。

答案 1 :(得分:4)