C# 将参数传递给以前启动的程序实例

C# 将参数传递给以前启动的程序实例,c#,.net,parameter-passing,C#,.net,Parameter Passing,我需要编写程序,将一些路径作为参数,并播放音频文件,位于该路径。但在我第二次调用这个程序之后,我需要第一个程序来完成播放第二个文件,在播放第二个文件之后,它作为一个参数传递给第二个实例。如果可能的话,如何将第二个参数作为队列传递给第一个程序实例?我认为您不需要第二个程序实例。您可以简单地要求第一个程序在播放完第一个音频文件后播放新的音频文件。您可以通过多种方式实现这一点 您可以在播放音频文件的程序中托管WCF服务。它将同时播放音频和收听WCF服务。发送第二个参数的程序将通过WCF服务传递新路径

我需要编写程序,将一些路径作为参数,并播放音频文件,位于该路径。但在我第二次调用这个程序之后,我需要第一个程序来完成播放第二个文件,在播放第二个文件之后,它作为一个参数传递给第二个实例。如果可能的话,如何将第二个参数作为队列传递给第一个程序实例?

我认为您不需要第二个程序实例。您可以简单地要求第一个程序在播放完第一个音频文件后播放新的音频文件。您可以通过多种方式实现这一点

  • 您可以在播放音频文件的程序中托管WCF服务。它将同时播放音频和收听WCF服务。发送第二个参数的程序将通过WCF服务传递新路径

  • 同样,您可以使用套接字进行通信

  • 第三种方法是使用Windows消息队列。音频播放器将持续汇集新路径的队列。第二个程序将通过在Windows消息队列中添加消息来发送新的文件路径

  • 您还可以使用文件进行通信。音频播放器可以查找文件中的更改,其他程序可以写入该文件的路径


我想你在描述以下策略:-

  • 应用程序的实例A已打开并正在播放曲目X
  • 用户在资源管理器中双击轨迹Y
  • windows启动应用程序的实例B,并将文件名作为参数传入
  • 实例B检测到实例A
  • 实例B向实例a发送消息以播放曲目Y
  • 实例B关闭
  • 实例A收到消息,停止播放曲目X并开始播放曲目Y
  • 显然这就是VLC媒体播放器的工作方式。如果您尝试上述操作,您将看到一个新的VLC进程在当前实例开始播放新曲目之前出现一小段时间

    这种非常简单的跨进程通信可以通过以下方式实现。例如,您可以使用一个互斥体来指示当前正在运行的实例的存在,另一个互斥体用于将新的曲目名称传递给当前实例


    实际上,它描述了一些非常类似的内容。

    谢谢您的回答,但要求始终将路径作为参数发送。关键是另一个程序会在某些事件上调用我的one+参数。我想这就是我搜索的方式。。谢谢,我会尝试使用互斥锁!完成。使用了这种消息传递机制:。谢谢你的提示!