如何检查并杀死我的应用程序的另一个实例?

时间:2014-04-22 07:13:08

标签: c# windows-runtime windows-store-apps kill-process

我遇到的问题是我的客户已在运行应用程序appA。然后他们转到桌面(不杀死appA),并通过使用PowerShell运行appA.ps1来升级版本的应用程序。之后,在安装后点击appA - > get an exception。我想根本原因是另一个实例正在运行。

我的问题是如何检查我的应用程序是否已在运行?我可以杀了吗?

另外,我的应用程序是windows 8 store,c#。

2 个答案:

答案 0 :(得分:3)

如果您想让当前实例保持运行并杀死应用程序的所有其他实例,则可以执行此操作

 // get current process
        Process current = Process.GetCurrentProcess();
        // get all the processes with currnent process name
        Process[] processes = Process.GetProcessesByName(current.ProcessName);
        foreach (Process process in processes)
        {
            //Ignore the current process  
            if (process.Id != current.Id)
            {
                process.Kill();
            }
        }

使用命名空间System.Diagnostics;

答案 1 :(得分:0)

来自Social MSDN

  

所有Metro风格的应用程序都在高度沙盒化的环境中工作,无法直接启动外部应用程序。

您无法访问Windows应用进程。不幸的是,您无法检查是否正在运行Windows应用程序。

到目前为止,我没有找到另一种方式。


没有Metro风格的应用

首先,您需要以下流程:

var processes = Process.GetProcessesByName("your application name")

检查您的程序是否已在运行:

var isRunning = processes.Length > 1;

然后循环遍历它们并关闭进程:

foreach (var process in processes)
{
    process.CloseMainWindow();

    // OR more aggressive:
    process.Kill();
}