首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >关闭旧的应用实例

关闭旧的应用实例
EN

Stack Overflow用户
提问于 2014-06-03 07:17:58
回答 3查看 3.7K关注 0票数 6

我正在开发一个程序,其中只有一个实例可以运行。我知道我可以应用互斥锁来防止多个实例运行。

但是我想要它,所以如果一个应用程序的新实例运行,它应该终止旧的实例。可执行文件将始终具有相同的名称。

我尝试在form事件上运行以下操作;

代码语言:javascript
复制
    Process[] pname = Process.GetProcessesByName(AppDomain.CurrentDomain.FriendlyName.Remove(AppDomain.CurrentDomain.FriendlyName.Length - 4));

    if (pname.Length > 1)
    {
        pname[0].Kill();
    }

这实际上很有效..。每一次蓝色的月亮。说真的它起作用了..。第一次,第二次应用程序将根本不加载。如果我再运行5次,它可能会运行。

它似乎不太可靠,有没有人可能有一个更优雅的解决方案?

谢谢!

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2014-06-03 07:35:12

这对我来说很管用

代码语言:javascript
复制
if (pname.Length > 1)
{
    pname.Where(p => p.Id != Process.GetCurrentProcess().Id).First().Kill();
}
票数 9
EN

Stack Overflow用户

发布于 2014-06-03 07:20:50

您可以尝试使用此代码而不是使用可执行文件名来获取进程吗?

代码语言:javascript
复制
Process currentProcess = Process.GetCurrentProcess();
Process[] processItems = Process.GetProcessesByName(currentProcess.ProcessName);
票数 0
EN

Stack Overflow用户

发布于 2014-06-03 07:25:26

你可以改变你的逻辑。当您基于条件pname运行另一个实例时,为什么不调用Environment.Exit。长度==1

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24009201

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档