vb.netasynchronouszipshell32

How to check when Shell32.Folder.CopyHere() is finished


I need to unzip en zip some files in my application using Shell32. Right now, I use srcFolder.CopyHere(destFolder.Items()) to achieve this. However, my next line of code requires the newly made ZIP-file. But since the CopyHere method is Async, how can I check when it in finished? Right now I use a Thread.Sleep for around 500 ms which is enough for my computer to finish creating the ZIP file, but it's not good code imo.

Any ideas?

More info/code can be provided if necessary.


Solution

  • I found it, used something like this:

      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
    

    Not really perfect but will lose less time than with my first approach.