首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >VB 2008进度条中的IMAPI2

VB 2008进度条中的IMAPI2
EN

Stack Overflow用户
提问于 2010-09-23 21:39:30
回答 1查看 2K关注 0票数 1

我开始制作会烧录CD/DVD的程序,一切都很好。我找到了使用IMAPI2 API的方法,但现在我遇到了问题:我无法获得燃烧的进度条。这是代码:

代码语言:javascript
复制
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(Stream)

被触发,程序冻结,直到数据被完全烧毁后才会做出响应。

有什么方法来阻止这个,停止程序冻结和启用进度条?

谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2010-09-24 07:41:07

你需要使用线程。因此,在您的按钮单击事件处理程序中,您将启动一个新线程,该线程执行实际的刻录操作,当该线程处于单独的线程中时,主线程可以继续更新GUI (包括进度条)。

关于一个简单的示例,请参阅Thread.Start,如果您需要更多的信息,我建议从这里开始:托管线程

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3782730

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档