多个应用程序的WPF互斥对象不工作-STA问题

本文关键字:对象 工作 -STA 问题 应用程序 WPF | 更新日期: 2023-09-27 18:29:11

我遇到Mutex类的问题。我在多实例WPF应用程序中工作,希望锁定特定进程,使其不被除首先调用方法的实例之外的所有其他实例输入。

所以我创建了一个新的互斥对象:

private static Mutex lockMutex = new Mutex(false, "LockOnTaskOpen");

然后在一种方法中,我做了以下操作:

try 
{
if (lockMutex.WaitOne(500))
{
        try
        {
            // doing my code here
        }    
        catch (Exception e)
        {
            ex = e;
        }
        finally
        {
            lockMutex.ReleaseMutex();
        } 
}
else
{
     return;
}
}
catch
{
}

问题是,一个实例正在进入try并正常工作,另一个实例进入else块(因此也正常),但随后它捕获了一个异常,即

"调用线程必须是STA,因为许多UI组件都需要它。"

如果有人能帮我解决这个问题,我将不胜感激。

非常感谢!

多个应用程序的WPF互斥对象不工作-STA问题

这个问题似乎与Mutex无关,这只是误导了我。

关于catch块,我在那里处理异常,但这不是重点。

感谢您指出跟踪,看起来我是bli