C# Can';复制后不要删除文件
mscorlib.dll中发生类型为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
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
中的文件,您还要做什么?谁根据一个能告诉你这一点的工具来持有锁,比如解锁器?你能在一个全新的程序中复制这个吗?例如,你把它放到一个新的控制台应用程序中,给它一个路径,结果它失败了?你说“复制后不能删除”。你是说如果你删除了两行文件。复制行,那么你可以删除吗?根据主线程被文件阻止。复制直到复制完成。因此,锁定文件的不应该是复制过程。