我发现有很多帖子展示如何检测,如果应用程序实例已经在运行的。但我不能找到任何一个演示如何访问或使用相同的运行的应用程序。

我已经创建壳菜单项和连接它们的应用程序。对于前。如果你右击任何文件夹显示“OS监测器”。如果我点击了一个应用程序已启动。如果我再次右键单击该文件夹并选择“OS监视器”同一应用程序的另一个实例启动。我必须防止这种情况。而且,现在如果用户关闭了“OS监测器”的形式我只是做它隐藏起来。这样,如果用户再次选择相同的菜单选项,然后相同的运转形式需要显示。

我已创建使用C#2005中的应用。没有任何人有这个想法我怎么能访问应用程序相同的运行实例。

预先感谢。

有帮助吗?

解决方案

作为应用程序的地址空间被分离,则必须使用一些全局机构/对象。一个例子是名为互斥:你创建一个名为互斥体,如果它已经存在,那么应用程序已在运行。 使用互斥锁确保只有一个实例运行呈现在这个博客

在第二个步骤是与正在运行的实例进行通信。因此,你必须使用一些IPC机制。最简单的就是使用Windows的邮件,如果您运行的是Windows(如在来自博客的例子)。请注意,这将无法移植到单声道,你必须让本地调用。如果该事项可以使用其他可能性的网络连接。见这个问题的答案: IPC机制在C#中 - 使用和最佳实践

已经传输参数,运行实例后,你必须,当然退出,否则你将有两个应用程序运行结束。很短的时间(参数传输的时间),你确实有两个实例运行,但只有一个有效的做的工作。

这反应是,你可以/要进行修改的前提下向“OS监控器”。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top