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

C# 在另一个进程中使用时删除文件,c#,wpf,C#,Wpf,在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('-

在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);

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

要调查谁可以锁定文件,请使用Microsoft/SysInternals提供的GUI版本-Process Explorer


请参阅有关此主题讨论的相关消息。

是否确定查看器控件正在处理其对文件的引用?请发布该事件处理程序中的代码。我想在其他进程仅访问该文件时删除该文件。谢谢,我理解。但是,为了确定您无法删除该文件的具体原因,需要提供我所要求的其他信息。@salamonti可能是所引用的进程是您自己的,因为有一个引用(正如@djacobson已经提到的)我试图处理,但没有更改