You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C#控制台程序退出删除文件报错:文件被其他进程占用

问题原因

你遇到的问题是因为File.Create(path)创建文件后,返回的FileStream没有被关闭,导致文件被当前进程锁定。当ProcessExit事件触发时,该流仍处于打开状态,此时尝试删除文件会因为文件被自身进程占用而失败。

解决方案

解决这个问题的核心是确保创建文件后立即释放文件句柄,以下几种方式都可以:

  • 直接关闭流:创建文件后手动调用Close()方法释放句柄
if (!File.Exists(path)) 
{
    File.Create(path).Close();
}
  • 使用using语句(推荐):using会自动在代码块结束时释放流,是更安全的写法
if (!File.Exists(path))
{
    using (File.Create(path)) { }
}
  • 用File.WriteAllText创建空文件:这个方法内部会自动处理流的打开和关闭,适合创建空文件的场景
if (!File.Exists(path))
{
    File.WriteAllText(path, string.Empty);
}

修改后,文件句柄会被及时释放,ProcessExit事件触发时就能正常删除文件了。

内容的提问来源于stack exchange,提问作者Nguyen Hoai Nam

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.13 21:30:03