有谁知道为什么下面的代码会抛出 System.ArgumentException?
using (var tfc = new TempFileCollection())
{
var fn = tfc.AddExtension("tmp");
Console.WriteLine(fn);
}
这里是确切的异常(exception):
System.ArgumentException: The file name 'C:\Users\pczapla\AppData\Local\Temp\iqulrqva.tmp' was already in the collection.
Parameter name: fileName.
Reflector 的一个小 Action 揭示了 TempFileCollection
中以下有趣的片段:
new FileIOPermission(FileIOPermissionAccess.AllAccess, basePath).Demand();
path = this.basePath + ".tmp";
using (new FileStream(path, FileMode.CreateNew, FileAccess.Write))
{
}
flag = true;
...
this.files.Add(path, this.keepFiles);
这是在TempFileCollection.EnsureTempNameCreated
中,由TempFileCollection.BasePath
调用,由TempFileCollection.AddExtension
调用。我猜占位符使用“.tmp”,所以你不能。
我是一名优秀的程序员,十分优秀!