gpt4 book ai didi

.NET 4 单个应用程序实例

转载 作者:行者123 更新时间:2023-12-04 06:11:57 26 4
gpt4 key购买 nike

我经常编写仅支持一个实例的 .net 应用程序。以前我使用 .net-remoting,现在使用 WCF 来检测我的应用程序的一个实例是否正在运行并将焦点放在这个实例上。

我的问题是,如果 .net4 有更好的解决方案可用于实现单实例应用程序(或者通常有更好的解决方案可用,因为在应用程序的一开始加载 WCF 或远程处理程序集会对性能产生不良影响)

更新

感谢所有的帖子。我最初的问题的答案似乎是“不,在 .net 4 中实现单实例应用程序并没有什么新鲜事 ”。

感谢所有附加信息,我将更改我当前的项目以使用互斥锁来提供所需的功能。我接受了 Bob Moore 的回答,因为它附带的信息最多,但感谢所有发布有用信息的人。

最佳答案

这样做的传统方法是使用互斥锁,例如

bool bNew = true; 
using (Mutex mutex = new Mutex(true, "MYAPP_0D36E4C9-399D-4b05-BDA3-EE059FB77E8D", out bNew))
{
if (bNew)
{
// blah, blah,
Application.Run(new MainForm());
}
}

编辑:

我发现此代码可以在线调用 SetForegroundWindow,因此您可以找到应用程序的另一个实例并将其向前推进:
[DllImport("user32.dll")]
[return: MarshalAs(UnmanagedType.Bool)]
static extern bool SetForegroundWindow(IntPtr hWnd);


Process me = Process.GetCurrentProcess();
foreach (Process process in Process.GetProcessesByName (me.ProcessName))
{
if (process.Id != me.Id)
{
SetForegroundWindow (process.MainWindowHandle);
break;
}
}

请注意,在现代 Windows 实现中,您只能放弃前景。

关于.NET 4 单个应用程序实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3211529/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com