如何检查时Shell32.Folder.CopyHere()完成(How to check when

2019-06-23 10:59发布

我需要解压ZIP连接使用SHELL32在我的应用程序的一些文件。 现在,我使用srcFolder.CopyHere(destFolder.Items())来实现这一目标。 然而,我的下一行代码需要新做的ZIP文件。 但由于CopyHere方法是异步,我怎么能检查,当它在完成了吗? 现在,我使用Thread.Sleep周边500毫秒这是足以让我的电脑以完成创建ZIP文件,但国际海事组织的不好的代码。

有任何想法吗?

如果必要的话,可以提供更多信息/代码。

Answer 1:

这里是另一个等待完成复制

'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


Answer 2:

我发现,使用这样的:

  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

没有真正完美的,但将失去的时间比我的第一种方法。



文章来源: How to check when Shell32.Folder.CopyHere() is finished