【发布时间】:2011-10-15 12:07:01
【问题描述】:
我需要编写程序,该程序将获得一些路径作为参数,并播放位于该路径中的音频文件。但是在我第二次调用该程序之后——我需要第一个来完成播放文件,然后——播放第二个文件,它作为参数传递给第二个实例。如果可能的话,如何将第二个参数作为队列传递给第一个程序实例..?
【问题讨论】:
标签: c# .net parameter-passing
我需要编写程序,该程序将获得一些路径作为参数,并播放位于该路径中的音频文件。但是在我第二次调用该程序之后——我需要第一个来完成播放文件,然后——播放第二个文件,它作为参数传递给第二个实例。如果可能的话,如何将第二个参数作为队列传递给第一个程序实例..?
【问题讨论】:
标签: c# .net parameter-passing
我猜你是在描述以下策略:-
显然这就是 VLC 媒体播放器的工作方式。如果您尝试上述操作,您将看到一个新的 VLC 进程在您的当前实例开始播放新曲目之前出现一小段时间。
这种非常简单的跨进程通信可以使用System.Threading.Mutex 之类的东西来实现。例如。您可以使用一个互斥体来指示当前正在运行的实例的存在,而另一个用于将新轨道名称传递给当前实例。
事实上,this article 描述的东西非常相似。
【讨论】:
我认为您不需要为此目的的第二个程序实例。您可以简单地要求第一个程序播放完第一个音频文件后播放新的音频文件。您可以通过多种方式实现这一目标。
您可以在播放音频文件的程序中托管 WCF 服务。它将播放音频并并行收听 WCF 服务。发送第二个参数的程序将通过 WCF 服务传递新路径。
同样可以使用套接字进行通信
第三种方法是使用 Windows 消息队列。音频播放器将不断为新路径汇集队列。第二个程序将通过在 Windows 消息队列中添加消息来发送新的文件路径
您还可以使用文件进行通信。音频播放器可以查找文件的变化,其他程序可以写入该文件的路径
【讨论】: