在另一个进程中使用时删除文件

Posted

技术标签:

【中文标题】在另一个进程中使用时删除文件【英文标题】:Delete file when it used in another process 【发布时间】:2011-08-09 02:35:03 【问题描述】:

在 WPF 中的DocumentViewerControl 中,我想在关闭事件处理程序中关闭控件后删除文件。我试图删除它,但 VS 告诉我它已被另一个进程使用。如何删除?

TextBlock tb = (TextBlock)e.TabItem.Header;
int index = Convert.ToInt32(tb.Text.Split(' ')[1]) - 2;
string path = GlobalStaticVariables.store_item_content[index].Split('-')[1];
Process temp = Process.GetCurrentProcess();
temp.Dispose();
System.IO.File.Delete(path);

【问题讨论】:

您确定查看器控件正在处理其对文件的引用吗?请从该事件处理程序中发布代码。 我想删除只有另一个进程访问的文件 是的,谢谢,我明白了。但是,为了确定您无法删除文件的具体原因,需要提供我要求的其他信息。 @salamonti 很可能被引用的过程是你自己的,因为引用被持有(正如@djacobson 已经提到的那样) 我试图处理但没有改变 【参考方案1】:

这个问题现在被问了很多次,答案仍然没有改变:删除其他进程打开的文件是不好的,因此很难做到。通常最好找出文件被锁定的原因并修复应用程序行为以避免广泛的文件锁定或等到应用程序释放文件。

要调查谁锁定了文件,您可以使用Handle 或 GUI 版本 - Microsoft/SysInternals 的 Process Explorer。

查看有关此主题的讨论的相关消息。

【讨论】:

以上是关于在另一个进程中使用时删除文件的主要内容,如果未能解决你的问题,请参考以下文章

win10删除文件提示:操作无法完成,因为程序已经在另外一个程序中打开 怎么解决?

删除文件时,显示“无法删除”,怎么办

文件删除时提示已在另一程序中打开,查看占用它的程序

jps.exe进程要怎么删除?

复制移动删除软链接硬链接原理

如何使用 C# 从 Windows Temp 文件夹中删除所有文件? (进程运行时)