在同一程序的两个实例之间发送数据

时间:2014-03-08 14:08:27

标签: c# wpf

我刚刚为我的程序与Mutex和Single Instance进行了斗争。

我已经开始工作,我可以检查我的程序是否有另一个实例正在运行。

但这是我现在想弄清楚的事情:

如果我有另一个实例在运行,我想将数据从新实例发送到旧实例。

以下是我的音乐播放器的场景:

用户点击一个mp3文件,然后在新实例中打开。

新实例看到已经有一个实例打开并将文件路径发送到第一个实例。

你是怎么做这些事的? 任何阅读它的地方都会很棒。

1 个答案:

答案 0 :(得分:1)

我一直在解决同样的问题。 In this article您可以阅读所有可用的进程间通信机制。

我选择在我的项目中使用TCP套接字。您可以在此处找到serverclient应用示例。

近似算法是:

  1. 检查是运行同名的流程
  2. 如果不是,请创建服务器套接字并开始侦听客户端 使用BeginAccept方法的连接
  3. 如果同一个实例已在运行,请创建客户端套接字, 发送数据和关闭实例
  4. 当服务器端获取数据时,它会处理数据并继续监听
  5. 当用户关闭程序时,您必须结束收听
  6. 请注意,您必须在退出前配置套接字。你也应该在后台线程中监听并使用同步机制(如EventWaitHandle)等待,直到从客户端接收数据,然后再转到下一个。