我发现了一些名为“SingleInstanceHost”的有趣旗帜,可以在Application Manifest File中设置。 Msdn说它“表明应用程序是否有一个实例主机”。
有谁可以解释这个标志是什么意思?
我的测试:
如果我在没有此标志的设备上运行我的wp7 silverlight应用程序,那么如果我尝试从开始菜单运行第二个应用程序实例 - 系统将终止第一个实例并运行新实例。
< / LI>如果我在带有此标志的设备上运行我的wp7 silverlight应用程序,那么如果我尝试从开始菜单运行第二个应用程序实例 - 系统将终止第一个实例并且不运行新实例。
奇怪的行为!
答案 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();
}
}