【发布时间】:2011-03-12 12:54:34
【问题描述】:
如果已经有一个实例正在运行,我的应用程序在加载时的行为需要稍有不同。
我了解如何使用互斥锁来防止加载额外的实例,但这并不能完全解决我的问题。
例如:
- 实例 1 加载,获取互斥体。
- 实例 2 加载,无法获取互斥锁,知道还有另一个实例。到目前为止,一切顺利。
- 实例 1 关闭,释放互斥体。
- 实例 3 加载,获取互斥体,不知道实例 2 仍在运行。
有什么想法吗?值得庆幸的是,它不需要处理多个用户帐户或类似的东西。
(C#,桌面应用程序)
编辑:澄清一下,应用程序不需要被限制在一个实例中,如果有另一个实例已经在运行,只需执行稍微不同的启动操作。多个实例很好(并且是预期的)。
【问题讨论】:
-
在您提到的场景中,期望的行为是什么?实例 3 应该做实例 1 正在做的事情,而实例 2 应该继续像以前一样吗? (假设您不想确保单个实例,因为这是由互斥锁解决的。实例 2 最终将退出)
-
在这种情况下,实例 1 以一种方式运行,实例 2 和 3 需要使用替代行为。如果有一个实例已经在运行,无论它何时启动或此后发生了什么,一个新实例的行为都会略有不同——尽管不是很明显——不同。区别只是加载时的一次性操作。
标签: c# visual-studio-2008 mutex multiple-instances