如何检查Shell32.Folder.CopyHere()何时完成

Jel*_*ghs 7 vb.net zip asynchronous shell32

我需要使用Shell32解压缩我的应用程序中的一些文件.现在,我 srcFolder.CopyHere(destFolder.Items())用来实现这一目标.但是,我的下一行代码需要新制作的ZIP文件.但由于该CopyHere方法是Async,我如何检查它何时完成?现在我使用一个Thread.Sleep大约500毫秒,这足以让我的电脑完成创建ZIP文件,但它不是很好的代码imo.

有任何想法吗?

如有必要,可以提供更多信息/代码.

小智 10

这是另一个等待完成复制的人

'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
Run Code Online (Sandbox Code Playgroud)


Jel*_*ghs 6

我发现它,用过这样的东西:

  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
Run Code Online (Sandbox Code Playgroud)

不是很完美,但会比我第一次接近的时间少.