清除LocalMessageReceiver的Mac Silverlight资源

时间:2012-11-13 23:36:30

标签: c# macos silverlight

我有一个用Silverlight编写的应用程序,可用于Mac和Windows平台。作为其功能的一部分,只能允许运行一个。我们已使用LocalMessageReceiver approach实现此功能,并且按预期工作。

但是,我们在Mac上遇到了问题。如果应用程序崩溃或强制退出,则无法重新启动应用程序,因为单实例代码报告应用程序已在运行。到目前为止,我们发现的唯一办法是重新启动计算机。但是,这很不方便。

在Mac OS X上是否有办法清除LocalMessageReceiver使用的资源而无需重新启动计算机?我假设系统中某处有共享资源,但我没有找到任何文档来讨论这些资源是什么或如何重置它们。

1 个答案:

答案 0 :(得分:1)

嗯......没有其他人回答......这是我的解决方法;我无法明确设置代码,但我可以帮到你的想法:

如果您无法侦听LocalMessageReceiver(),可能有两个原因

  1. 因为有一个真正的其他Silverlight实例正在运行
  2. 因为发生了崩溃并且资源未正确清除
  3. 区分原因的诀窍是尝试与LocalMessageReceiver进行通信。 设置LocalmessageSender,为响应添加一个句柄并尝试发送消息。

    “真正的”其他Silverlight实例会回复。崩溃剩下的没有。所以你可以等待合理的超时回复。

    如果没有(所以它是崩溃)你有一些策略:例如你可以设置一个新的LocalMessageReceiver(带有“后备”名称)来检查其他实例或类似的东西。