我有一个工作的vb.net程序,只使用process.start(MPC-HC.exe)
自动播放音乐文件的文本文件列表。一切顺利,除非用户希望在列表尚未完成时停止播放任何其他音乐。
按建议更新代码后,仍有1个问题: 因为我希望音乐能够在没有用户干预的情况下自动播放 - 我需要在每个选择完成后单独指定播放器。这可以通过命令行开关来完成" / play / close"。
我如何:
在我的原始代码中,我使用了 -
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
答案 0 :(得分:7)
请勿使用循环并在其中调用WaitForExit
。相反,将项目放在Queue
中,使下一个项目出列,调用Process.Start
,然后处理Exited
的{{1}}事件。在事件处理程序中,将下一个项目出列并再次执行相同操作。 E.g。
Process