控制visual basic中的每个循环

时间:2010-03-02 10:32:38

标签: vb.net

我有以下代码......

For Each dgvRow In bout_grid.Rows
            vfile = dgvRow.Cells("FileName").Value
            video.FileName = "D:\bee\" + vfile

            vduration = video.Duration
            vposition = video.Position

            If vduration > 0 The
                bplayer_out.URL = "D:\bee\" + vfile
                bplayer_out.Ctlcontrols.play()
            End If

        Next dgvRow

但它只播放一个视频而不是停止但我希望它应该播放datagridview中的每个视频,即bout_grid ....我试过了

System.Threading.Thread.Sleep = vduration

但它停止了我能解决的每一件事

3 个答案:

答案 0 :(得分:2)

是的,您无法在Windows窗体或WPF应用中使用此类代码。 Windows应用程序是事件驱动的,您无法在不阻止UI更新的情况下编写长循环。

Windows Media Player会在发生重大事件时生成事件。就像PlayStateChange event一样。为该事件编写一个事件处理程序,以索引列表中的下一个项目。请注意,WMP还支持播放列表。

在Visual Basic中编写WMP的最终资源是MSDN Library topic。看看提供的样品。

答案 1 :(得分:1)

bplayer_out.Ctlcontrols.play()结束后会发生什么?弹出一个对话框?例外?这两个结果都会停止每个循环。

使用调试器运行它,并在 bplayer_out.Ctlcontrols.play()

之后查看控件返回的位置

答案 2 :(得分:1)

bplayer_out.Ctlcontrols.play()很可能是异步的,就像许多其他声音API一样。因此,当第一个声音仍然很忙时,可能会立即播放下一个声音 - 您可能只听到第一个声音。

什么类型 bplayer