我需要解压ZIP连接使用SHELL32在我的应用程序的一些文件。 现在,我使用srcFolder.CopyHere(destFolder.Items())
来实现这一目标。 然而,我的下一行代码需要新做的ZIP文件。 但由于CopyHere
方法是异步,我怎么能检查,当它在完成了吗? 现在,我使用Thread.Sleep
周边500毫秒这是足以让我的电脑以完成创建ZIP文件,但国际海事组织的不好的代码。
有任何想法吗?
如果必要的话,可以提供更多信息/代码。
我需要解压ZIP连接使用SHELL32在我的应用程序的一些文件。 现在,我使用srcFolder.CopyHere(destFolder.Items())
来实现这一目标。 然而,我的下一行代码需要新做的ZIP文件。 但由于CopyHere
方法是异步,我怎么能检查,当它在完成了吗? 现在,我使用Thread.Sleep
周边500毫秒这是足以让我的电脑以完成创建ZIP文件,但国际海事组织的不好的代码。
有任何想法吗?
如果必要的话,可以提供更多信息/代码。
这里是另一个等待完成复制
'Wait until the File/Folder has finished writing to zip file...
Do Until Shell.NameSpace(Filename).Items.Count = Shell.NameSpace(Input).Items.Count
System.Threading.Thread.Sleep(200)
System.Diagnostics.Debug.Print("Waiting...")
Loop
我发现,使用这样的:
srcFolder.CopyHere(destFolder.Items())
While FileInUse(FILEPATH & "BudgetJaarOverzichtSMB.zip")
Thread.Sleep(100)
End While
Private Function FileInUse(ByVal FilePath As String) As Boolean
Try
FileOpen(1, FilePath, OpenMode.Input)
FileClose(1)
Return False ' File not in use
Catch ex As Exception
Return True ' File in use
End Try
End Function
没有真正完美的,但将失去的时间比我的第一种方法。