我有 2 个线程,它们通过相互发送文件进行通信。当线程 #1 执行一个
// Thread #1
File.Create(@"C:\somedir\response.done");
然后线程 #2 应该删除它。
// Thread #2
while (!File.Exists(@"C:\somedir\response.done"))
Thread.Sleep(100);
while (File.Exists(@"C:\somedir\response.done"))
{
try {
File.Delete(@"C:\somedir\response.done");
}
catch { Thread.Sleep(1000); };
}
但是,文件似乎被锁定了。目录中生成了一个response.done 文件,但它永远不会被删除。当我尝试手动删除它时,然后
“该操作无法完成,因为该文件已在 MyProgram 中打开。请关闭该文件并重试。”
我怎样才能避免这种情况?
最佳答案
File.Create
返回一个 FileStream
。所以...关闭它:
using(File.Create(path)) {
// add contents here if needed
}
using
确保它是 Dispose()
d,因此关闭。注意:某些 AV 系统也可能会干扰文件访问,但这通常不是什么大问题。
关于c# - File.Create 似乎锁定了文件。我怎样才能避免这种情况?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7320457/