使用process.start后如何退出主程序?

时间:2016-09-28 13:56:32

标签: vb.net

我有一个工作的vb.net程序,只使用process.start(MPC-HC.exe)自动播放音乐文件的文本文件列表。一切顺利,除非用户希望在列表尚未完成时停止播放任何其他音乐。

按建议更新代码后,仍有1个问题: 因为我希望音乐能够在没有用户干预的情况下自动播放 - 我需要在每个选择完成后单独指定播放器。这可以通过命令行开关来完成" / play / close"。

我如何:

  1. 指定要使用的播放器。
  2. 添加命令行开关
  3. 在我的原始代码中,我使用了 -

        Dim startInfo As New ProcessStartInfo
        startInfo.FileName = OpenWith
        startInfo.Arguments = f
    

    哪里

    OpenWith = "C:\Program Files\mpc-hc\mpc-hc.exe"
    f = vbDoubleQuote + TextLine + vbDoubleQuote + " /play /close"
    

    如何使用流程完成这些工作?

    谢谢,

    拉​​斯

    以下是更新的vb.net代码,其中包含建议的答案:

    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    
        OpenFileDialog1.Title = "Please Select a File"
        OpenFileDialog1.InitialDirectory = "C:\"
        OpenFileDialog1.Filter = "Text Files|*.txt"
        OpenFileDialog1.DefaultExt = "*.txt"
        OpenFileDialog1.FileName = "*.txt"
        OpenFileDialog1.ShowDialog()
    
        If OpenFileDialog1.CheckFileExists Then
            filePaths = New Queue(Of String)(File.ReadAllLines(OpenFileDialog1.FileName))
    
            'Execute the first file.
            process = Process.Start(filePaths.Dequeue())
            Process.EnableRaisingEvents = True
        End If
    
    End Sub
    
    Private Sub process_Exited(sender As Object, e As EventArgs) Handles process.Exited
        If filePaths.Count = 0 Then
            'No more files to execute.
            Application.Exit()
        Else
            'Execute the next file.
            Process = Process.Start(filePaths.Dequeue())
            Process.EnableRaisingEvents = True
        End If
    End Sub
    

1 个答案:

答案 0 :(得分:7)

请勿使用循环并在其中调用WaitForExit。相反,将项目放在Queue中,使下一个项目出列,调用Process.Start,然后处理Exited的{​​{1}}事件。在事件处理程序中,将下一个项目出列并再次执行相同操作。 E.g。

Process