2014-11-04 46 views
0

我遇到了Mutex类的问题。我正在处理多实例WPF应用程序,并希望锁定除了首先调用方法之外的所有其他实例输入的特定进程。多个应用程序无法正常工作的WPF互斥体 - STA问题

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

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 
{ 

} 

而问题是,一个实例正在进入一个尝试,工作正常,另一个例子去其他块(所以也可以),但它会发现这是一个例外:

“调用线程必须是STA,因为马你的UI组件需要这个。“

如果有人能够帮助我解决这个问题,那么我会很感激。

非常感谢!

+0

您确定异常是由'Mutex'使用?什么是堆栈跟踪?什么代码实际上抛出异常?为什么_isn't_线程STA已经? (并且请告诉我们,在所有例外情况下,您实际上并没有使用blanket catch,而没有在生产代码中向用户进行任何报告)。 – 2014-11-04 07:55:59

回答

0

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

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

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

相关问题