c# - File.Create 似乎锁定了文件。我怎样才能避免这种情况?

标签 c# file

我有 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/

相关文章:

c# - 为什么 C# Array.BinarySearch 这么快?

c# - xsd :decimal in WSDL 的限制

c# - 如何提取 "<>"之间的文本

c - 分配内存并将输入从文件读取到结构数组

java - 使用socket编程将文件从android传输到pc

php - 如何在 PHP 中序列化和反序列化大文件?

c# - 已添加具有相同 key 的项目。在 C# 中反序列化对象时

c# - 保存数据记录并再次使用,无需再次查询数据库

python - 如何计算 csv 文件中的行数并忽略未使用的行(使用 python)

file - 即使 775 也无法创建 centos 文件