1

CD/DVD を作成するプログラムの作成を開始しましたが、すべて問題ありません。IMAPI2 API で書き込む方法を見つけましたが、問題があります。その書き込みの進行状況バーを取得できません。コードは次のとおりです。

Dim CDD1 As New IMAPI2.MsftDiscMaster2
Dim CDD2 As New IMAPI2.MsftDiscRecorder2

Dim FSI As New IMAPI2FS.MsftFileSystemImage
Dim CDD3 As New IMAPI2.MsftDiscFormat2Data

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    Dim Index = 0
    Dim UniqueID = ""
    Dim Directory
    Dim Path = "C:\lll"
    Dim result
    Dim Stream

    Label1.Text = "----- Started -----."

    UniqueID = CDD1.Item(Index)
    Label1.Text = Label1.Text & vbCrLf & "ID found: " & UniqueID

    CDD2.InitializeDiscRecorder(UniqueID)
    Label1.Text = Label1.Text & vbCrLf & "Recorder selected!"

    Directory = FSI.Root
    Label1.Text = Label1.Text & vbCrLf & "Directory is here: " & Directory.ToString

    CDD3.Recorder = CDD2
    Label1.Text = Label1.Text & vbCrLf & "Recorder 2 selected!"

    CDD3.ClientName = "IMAPI2 TEST"
    Label1.Text = Label1.Text & vbCrLf & "Client Name Selected!"

    FSI.ChooseImageDefaults(CDD2)
    Label1.Text = Label1.Text & vbCrLf & "Default selected!"

    Directory.AddTree(Path, False)
    Label1.Text = Label1.Text & vbCrLf & "Directory added!"

    result = FSI.CreateResultImage()
    Stream = result.ImageStream

    Label1.Text = Label1.Text & vbCrLf & "Writing content to disc..."

    If (CDD3.IsCurrentMediaSupported(CDD2) = True) Then
        If (CDD3.IsRecorderSupported(CDD2) = True) Then

            CDD3.Write(Stream)

        Else
            MsgBox("Not Suported Recorder!")
        End If
    Else
        MsgBox("Not Suported Media!")
    End If

    Label1.Text = Label1.Text & vbCrLf & "----- Finished -----"

End Sub

コマンド時

CDD3.Write(ストリーム)

トリガーされ、プログラムがフリーズし、データが完全に書き込まれるまで応答しません。

これを停止し、プログラムのフリーズを停止して進行状況バーを有効にする方法はありますか?

ありがとう。

4

1 に答える 1

1

スレッドを使用する必要があります。したがって、ボタンクリックイベントハンドラーでは、実際の書き込みを行う新しいスレッドを開始し、それが別のスレッドで進行している間、メインスレッドはGUI(プログレスバーを含む)を更新し続けることができます。

簡単なサンプルについてはThread.Startを参照してください。さらに詳しい情報が必要な場合は、ここから開始することをお勧めします:マネージスレッド

于 2010-09-24T07:41:07.237 に答える