我需要使用 Shell32 解压缩应用程序中的一些文件。现在,我用它 srcFolder.CopyHere(destFolder.Items())
来实现这一点。但是,我的下一行代码需要新制作的 ZIP 文件。但是由于该CopyHere
方法是异步的,我如何检查它何时完成?现在我使用了Thread.Sleep
大约 500 毫秒的时间,这足以让我的计算机完成创建 ZIP 文件,但它不是很好的代码 imo。
有任何想法吗?
如有必要,可以提供更多信息/代码。
我需要使用 Shell32 解压缩应用程序中的一些文件。现在,我用它 srcFolder.CopyHere(destFolder.Items())
来实现这一点。但是,我的下一行代码需要新制作的 ZIP 文件。但是由于该CopyHere
方法是异步的,我如何检查它何时完成?现在我使用了Thread.Sleep
大约 500 毫秒的时间,这足以让我的计算机完成创建 ZIP 文件,但它不是很好的代码 imo。
有任何想法吗?
如有必要,可以提供更多信息/代码。
这是另一个等待完成复制的
'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
不是很完美,但会比我的第一种方法浪费更少的时间。