6

我为 silverlight 应用程序发现了一些名为“SingleInstanceHost”的有趣标志,可以在应用程序清单文件中设置。Msdn 说它“指示应用程序是否具有单个实例主机”。

谁能解释一下这个标志是什么意思?

我的测试:

  1. 如果我在没有此标志的设备上运行我的 wp7 silverlight 应用程序,那么如果我尝试从开始菜单运行第二个应用程序实例 - 系统会终止第一个实例并运行新实例。

  2. 如果我在带有此标志的设备上运行我的 wp7 silverlight 应用程序,那么如果我尝试从开始菜单运行第二个应用程序实例 - 系统会终止第一个实例并且不会运行新实例。

奇怪的行为!

4

1 回答 1

0

Silverlight 3 引入了一种应用程序相互通信的方式,无论是在同一页面上还是在不同的浏览器实例上实例化(甚至适用于已安装/OOB 应用程序)。通信由发送者和接收者类执行,它们通过命名通道交换消息。每个接收者必须为通道注册一个唯一的名称,否则将引发异常。

这就是诀窍。监听一个特定的命名通道就像一个互斥体。通过捕获 ListenFailed 异常,您可以选择显示适当的消息或启动不同版本的应用程序。所有工作都在 App.Xaml.cs 文件中完成:

private void Application_Startup(object sender, StartupEventArgs e)
{
try
{
    receiver = new LocalMessageReceiver("singleinstance");
    receiver.Listen();
    this.RootVisual = new MainPage();
}
catch (ListenFailedException)
{
    this.RootVisual = new DuplicateInstancePage();
}
}
于 2013-06-03T12:01:10.447 回答