在同一应用程序的多个实例之间传递数据

时间:2016-03-09 18:31:19

标签: c# .net windows wcf remoting

我有一个WPF客户端应用程序,在任何时间点最多可以有一个实例,如果用户运行第二个实例,它应该将输入参数传递给第一个应用程序实例并退出。 即我使用参数" hello"运行第一个实例,并再次使用新参数#34开始相同appln的新实例;欢迎",noe第二个实例应传递数据" welcome& #34;到第一个实例并退出。

其他WCF和.Net远程处理,有没有最简单,最干净的方法呢?

目前,我可以使用WindowsEventHandle将第一个实例设置为活动状态,但无法传递数据。这是在同一台登录中的同一台机器

3 个答案:

答案 0 :(得分:0)

非常基本,但您可以简单地写入文件并让其他应用程序实例监视文件,以获取具有基于当前时间戳到毫秒的消息的唯一ID的新命令。

答案 1 :(得分:0)

当然可以。我们尝试了多种方法,但使用互斥锁的方法看起来效果最好。

这里有一些样本: How can I check for a running process per user session?

关于mutex`es http://odetocode.com/blogs/scott/archive/2004/08/20/the-misunderstood-mutex.aspx

的好文章

一个简单的实现 https://stackoverflow.com/a/19326/444149

如果您进行更深入的搜索,我确信SO中有一个很好的示例,它显示了互斥事件如何用于触发另一个应用实例中的内容

答案 2 :(得分:0)

查看Memory-Mapped Files自.NET 4以来,它们已经可用,甚至可以与非托管应用程序共享内存。

  

非持久内存映射文件非持久文件是   与磁盘上的文件无关的内存映射文件。   当最后一个进程使用完文件时,数据就是   丢失,垃圾收集回收文件。这些文件是   适合为进程间通信创建共享内存   (IPC)。