我有2个线程通过相互发送文件进行通信.线程#1执行时
// Thread #1
File.Create(@"C:\somedir\response.done");
Run Code Online (Sandbox Code Playgroud)
然后线程#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); };
}
Run Code Online (Sandbox Code Playgroud)
但是,该文件似乎被锁定.在目录中生成了response.done文件,但它永远不会被删除.当我尝试手动删除它时,那么
"由于文件在MyProgram中打开,因此无法完成操作.关闭文件并重试."
我怎么能避免这个?
Mar*_*ell 10
File.Create返回一个FileStream.所以...关闭它:
using(File.Create(path)) {
// add contents here if needed
}
Run Code Online (Sandbox Code Playgroud)
的using确保它是Dispose()d,因此关闭.注意:某些AV系统也可能会干扰文件访问,但这通常不是一个大问题.
| 归档时间: |
|
| 查看次数: |
2354 次 |
| 最近记录: |