C# Can';复制后不要删除文件

C# Can';复制后不要删除文件,c#,file,io,C#,File,Io,mscorlib.dll中发生类型为System.IO.IOException的未处理异常 其他信息:进程无法访问文件pathOfMyFile,因为其他进程正在使用该文件 这是我在访问文件时遇到的错误。删除 我的代码如下所示: File.Copy(frompath, topath1); File.Copy(frompath, topath2); System.GC.Collect(); System.GC.WaitForPendingFinalizers(); File.Delete(fromp

mscorlib.dll中发生类型为
System.IO.IOException
的未处理异常

其他信息:进程无法访问文件
pathOfMyFile
,因为其他进程正在使用该文件

这是我在访问
文件时遇到的错误。删除

我的代码如下所示:

File.Copy(frompath, topath1);
File.Copy(frompath, topath2);
System.GC.Collect();
System.GC.WaitForPendingFinalizers();
File.Delete(frompath);
frompath
是指向.png图像的路径。
我可以做些什么来实现这一点?

首先,您可以删除两个垃圾收集调用,因为它们将被自动处理

如果复制只是需要时间来完成,而文件系统需要释放句柄,则可以尝试重复删除,直到成功为止。您可以忽略IOException,但一定要处理其他类型

while (true)
{
    Thread.Sleep(50);

    try
    {
        File.Delete(frompath);
        break;
    }
    catch (IOException)
    {
        // Ignore IO exceptions
    }
    catch (Exception)
    {
        // Handle other exceptions
    }
}

topath1
topath2
topath
是三个不同的变量。您的应用程序或其他应用程序仍然持有由
topath
指向的文件的锁。显示所有相关代码。是否要从路径中删除?我假设你复制一个文件并不是为了翻身并删除你刚做的副本。是的,我写错了。你能分享一些更相关的细节和你之前在你的问题上的研究吗?对于
frompath
中的文件,您还要做什么?谁根据一个能告诉你这一点的工具来持有锁,比如解锁器?你能在一个全新的程序中复制这个吗?例如,你把它放到一个新的控制台应用程序中,给它一个路径,结果它失败了?你说“复制后不能删除”。你是说如果你删除了两行文件。复制行,那么你可以删除吗?根据主线程被文件阻止。复制直到复制完成。因此,锁定文件的不应该是复制过程。