VB 2008 Progress BarのIMAPI2
-
04-10-2019 - |
質問
私は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(ストリーム)
トリガーされ、プログラムが凍結し、データが完全に燃やされるまで応答しないでください。
これを止めて、プログラムのフリーズを停止し、進行状況バーを有効にする方法はありますか?
ありがとう。
解決
スレッドを使用する必要があります。したがって、ボタンクリックイベントハンドラーでは、実際の燃焼を行う新しいスレッドから開始し、それが別々のスレッドで進行中で、メインスレッドはGUI(進行状況バーを含む)を更新し続けることができます。
見る thread.start 簡単なサンプルと、詳細情報が必要な場合は、ここから始めることをお勧めします。 管理されたスレッド
所属していません StackOverflow