我有一个Visual Studio内置的可执行文件,它通常作为单实例应用程序运行(即在我们的生产环境中)。我通过使用项目属性的“应用程序”选项卡上“Windows应用程序框架属性”区域中的“创建单实例应用程序”复选框来完成此操作,如下所示:
我的应用程序是一个工作流应用程序,因此它涉及将工作流项从一个用户传递到另一个用户;所有相关用户都在自己的计算机上运行此应用程序。
然而,在我的开发环境中,我经常需要同时冒充几个不同的用户(这种模拟用户的功能是用户自己不知道的功能)以便排除故障应用程序中的复杂错误。让多个实例同时打开更容易,每个实例都冒充不同的用户,在某些情况下,这是必要的,因为错误可能只会在启动应用程序的初始开销后才会发生 - 换句话说,关闭切换用户上下文的应用程序会释放阻止该错误的状态。
我可以通过取消选中上述复选框轻松完成此操作;但是,在部署bug修复之前,我必须记得在某个时刻重新检查它。如果我可以设置仅存在于我的开发计算机上的应用程序外部的东西会更好,例如一个注册表值,它触发应用程序作为多实例应用程序运行。我一直在搜索高低,似乎之前没有人问过这个问题。
有没有人遇到这个?非常感谢您的帮助。
答案 0 :(得分:1)
我不确定这是做你需要的最优雅的方式,但这是我们使用的东西。我们经常需要测试应用程序的多个实例(不允许用户运行多个实例。)
当VS编译器运行代码时,它会在实例中使用.vshost运行代码,因此在使用此方法同时调试时运行应用程序时不会遇到问题。 此外,如果您想在Windows中运行多个实例,只需重命名.EXE并运行即可。
Dim myProcesses() As Process
myProcesses = process.GetProcessesByName("NameOfYourApp")
If myProcesses.Length > 1 Then
'Close app here
'(You can just .Close the startup form)
End If