File.Create似乎锁定了该文件.我怎么能避免这个?

Kas*_*sen 2 c# file

我有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系统也可能会干扰文件访问,但这通常不是一个大问题.