8

在我的一个集成测试中,我有两个线程先卸载然后安装程序,但是当按顺序运行时,它们会产生错误Failed to grab execution mutex. System error 258.

为了解决这个问题,我必须在卸载后睡觉。我尝试检查 msiexec 进程是否正在运行,但始终有 2-3 个,所以这不是一个好的指标。有没有办法检查 msiexec 执行互斥锁是否可用?

4

1 回答 1

12
    bool msiIsRunning = false;
    try
    {
        using(var mutex = Mutex.OpenExisting(@"Global\_MSIExecute"))
        {
            msiIsRunning = true;
        }
    }
    catch (Exception)
    {
       // Mutex not found; MSI isn't running
    }
于 2012-04-13T19:11:40.693 回答