2010-05-05 40 views
0

的目标是有一个在系统托盘中运行,并可以接受来自其实际GUI用户输入(这是不实际的问题)或应用程序的一个已经运行的实例接受命令行参数(这实际上是通过Windows资源管理器中的上下文菜单完成的)。现在,虽然我知道,在命令行参数并不完全可能的,一旦应用程序已启动,我需要一种方法通过某种形式的处理程序将数据传递到已运行的应用程序实例。我想也许定义和提高某种事件?恢复和数据传递到.NET应用程序

+0

您应搜索的术语是“远程处理”或WCF – Martin 2010-05-05 15:37:23

回答

0

could通过新的命令行取决于你如何处理多个实例,如果在过程中发现的另一个实例正在运行,你可以使用任何IPC的方法,如插座或内存映射文件沿着信息,以现有工艺前通过终止。

0

你将不得不在同一时间运行的程序的两个实例。解决他们之间的正常C#事件是行不通的。

你需要做的第一件事就是查看是否在系统托盘实例已经在运行。使用互斥锁可能是最简单的方法,请参阅此问题的详细信息:.NET 4 single application instance

接下来,您需要将使用.NET远程处理的全新实例中的所有数据传递给侦听实例,WCF或其他形式的IPC。你会发现很多关于使用WCF在机器之间进行对话的讨论 - 不要让它们让你感到困惑,或者让你认为WCF太重了 - 使用命名管道,或者甚至是在本地主机上监听的TCP端口都可以正常工作你在做。你也可以跳过互斥完全和使用你决定任何远程访问解决方案,以检查是否有已经运行的实例。

此外,不要忘记处理用户从上下文菜单中启动应用程序但系统托盘实例尚未运行(例如重新启动后)的情况。

相关问题