我有一个用Silverlight编写的应用程序,可用于Mac和Windows平台。作为其功能的一部分,只能允许运行一个。我们已使用LocalMessageReceiver approach实现此功能,并且按预期工作。
但是,我们在Mac上遇到了问题。如果应用程序崩溃或强制退出,则无法重新启动应用程序,因为单实例代码报告应用程序已在运行。到目前为止,我们发现的唯一办法是重新启动计算机。但是,这很不方便。
在Mac OS X上是否有办法清除LocalMessageReceiver使用的资源而无需重新启动计算机?我假设系统中某处有共享资源,但我没有找到任何文档来讨论这些资源是什么或如何重置它们。
答案 0 :(得分:1)
嗯......没有其他人回答......这是我的解决方法;我无法明确设置代码,但我可以帮到你的想法:
如果您无法侦听LocalMessageReceiver(),可能有两个原因
区分原因的诀窍是尝试与LocalMessageReceiver进行通信。 设置LocalmessageSender,为响应添加一个句柄并尝试发送消息。
“真正的”其他Silverlight实例会回复。崩溃剩下的没有。所以你可以等待合理的超时回复。
如果没有(所以它是崩溃)你有一些策略:例如你可以设置一个新的LocalMessageReceiver(带有“后备”名称)来检查其他实例或类似的东西。