Silverlight App的“SingleInstanceHost”标志

时间:2012-09-26 13:01:54

标签: silverlight

我发现了一些名为“SingleInstanceHost”的有趣旗帜,可以在Application Manifest File中设置。 Msdn说它“表明应用程序是否有一个实例主机”。

有谁可以解释这个标志是什么意思?

我的测试:

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

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

  3. 奇怪的行为!

1 个答案:

答案 0 :(得分:0)

Silverlight 3为应用程序之间的介绍提供了一种方式,可以在同一页面上进行通信,也可以在不同的浏览器实例上进行实例化(甚至可以使用Installed / 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();
}
}