2014-11-04 30 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