【问题标题】:"The process cannot access the file 'xxxx' because it is being used by another proces" [duplicate]“该进程无法访问文件'xxxx',因为它正在被另一个进程使用” [重复]
【发布时间】:2013-12-20 08:25:35
【问题描述】:
 System.IO.File.Delete(BmpPath);

我在删除文件时遇到问题。

“进程无法访问文件‘xxxx’,因为它正被 另一个过程”。

我该如何解决我的问题?

【问题讨论】:

  • 这意味着您尝试删除的文件正在被其他进程使用,请发布您的代码。
  • 考虑一下我遇到的这种情况,如果您以<Image Source="file location" /> 方式显示此图像,那么您就是在自己阻止它。
  • 是的,我正在使用 显示图像

标签: c# wpf


【解决方案1】:

首先,尝试确定该文件是否被另一个进程使用。

使用任务管理器或第三方来执行此操作,例如 Process Explorer

如果你不能确定使用这些,也可以试试Handle

Handle 的目标是搜索打开的文件引用,所以如果你没有指定任何 命令行参数它将列出系统中所有引用打开文件的句柄的值和文件的名称。它还需要几个参数来修改此行为。

最终,万一这些都不起作用,您可以尝试重新启动您的机器,看看问题是否再次出现。

在这种情况下,罪魁祸首很可能从启动开始,您可以牢记这一点继续搜索。

【讨论】:

  • 确定谁在锁定文件的一个不错的选择是Unlocker。它具有直观的 GUI 和 Windows 集成,因此您只需右键单击有问题的文件并使用 Unlocker 即可找出问题。
【解决方案2】:

尝试检查文件是否在某些程序中打开。如果是则关闭程序,然后尝试运行您的代码。否则重启你的电脑,然后重试。

【讨论】:

    【解决方案3】:

    您的文件已被锁定,如果文件已打开或正在被其他应用程序使用,请关闭您的文件。

    如果另一个进程锁定了文件,则在该进程释放文件之前,您将无法删除该文件。

    IOException

    同时检查文件是否存在。

    尝试使用

     if(System.IO.File.Exists(@"xxxxxxx\test.txt"))
            {
                // Use a try block to catch IOExceptions, to 
                // handle the case of the file already being 
                // opened by another process. 
                try
                {
                    System.IO.File.Delete(@"xxxxxxxx\test.txt");
                }
                catch (System.IO.IOException e)
                {
                    Console.WriteLine(e.Message);
                    return;
                }
            }
    

    【讨论】:

    • 我无权访问该文件。
    • @user3084365 很抱歉没有收到您之前的评论。您能否就您的问题提供更多信息?
    • C# 位图 bmp=(Bitmap)Bitmap.FromFile(FilePath); pic.Source=BitmapImage(bmp);文件.删除(文件路径); XAML (BitmapImage 是一个从 Bitmap 返回 BitmapImage 的函数)在 File.Delete(FilePath) 上告诉我问题。
    • @user3084365 所以您的路径无法访问,并且根据您之前的 cmets,您还加载了图像,这可能导致您的资源锁定,您能否在您的问题中添加一些详细信息。
    猜你喜欢
    • 1970-01-01
    • 2012-09-13
    • 1970-01-01
    • 1970-01-01
    • 2010-12-10
    相关资源
    最近更新 更多