7

Shell32を使用して、アプリケーション内のいくつかのファイルを解凍する必要があります。今、私は srcFolder.CopyHere(destFolder.Items())これを達成するために使用します。ただし、次のコード行には、新しく作成されたZIPファイルが必要です。しかし、CopyHereメソッドはAsyncであるため、終了時に確認するにはどうすればよいですか?Thread.Sleep現在、コンピュータがZIPファイルの作成を完了するのに十分な約500ミリ秒を使用していますが、これは適切なコードimoではありません。

何か案は?

必要に応じて、より多くの情報/コードを提供できます。

4

2 に答える 2

10

これがコピーが完了するのを待つためのもう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
于 2013-05-17T07:37:25.533 に答える
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

本当に完璧ではありませんが、私の最初のアプローチよりも時間のロスが少なくなります。

于 2012-04-06T12:30:27.723 に答える