2012-11-13 49 views
3

我有一個在Mac和Windows平臺上使用的Silverlight編寫的應用程序。作爲其功能的一部分,它只能被允許運行一個。我們已經使用LocalMessageReceiver approach實現了這一點,它按預期工作。爲LocalMessageReceiver清除Mac Silverlight資源

但是,我們在Mac上有一個問題。如果應用程序崩潰或強制退出,則無法重新啓動應用程序,因爲單實例代碼報告應用程序已在運行。我們迄今發現的唯一辦法是重新啓動計算機。然而,這最多是不方便的。

在Mac OS X上有沒有辦法清除LocalMessageReceiver使用的資源而無需重新啓動計算機?我假設系統中有共享資源,但我還沒有找到任何文檔討論這些資源是什麼或者如何重置它們。

+0

您是否自己找到解決方案?我遇到了同樣的問題。 –

+0

我有同樣的問題。不幸的是,維託的解決方法並不適用於我的情況。你有沒有找到解決辦法? –

回答

1

呃...因爲沒有人回覆...這是我的解決方法;我不能明確地設定的代碼,但我可以給你的想法:

如果你不能在LocalMessageReceiver()聽也可以是兩個原因

  1. 因爲運行
  2. 真正其它的Silverlight實例
  3. 因爲有一個崩潰和資源未正確

清除的伎倆來區分的原因是試圖傳達給LocalMessageReceiver。 設置LocalmessageSender,向響應添加一個句柄並嘗試發送消息。

「真正的」其他silverlight實例將回復。碰撞剩餘沒有。所以你可以等待一個合理的超時回覆。如果沒有(所以它是崩潰),你有一些策略:例如,你可以設置一個新的LocalMessageReceiver(帶有「fallback」名稱)來檢查其他實例或類似的東西。