2012-11-13 51 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”名称)来检查其他实例或类似的东西。