2012-09-26 11 views
6

Encontré una bandera interesante llamada "SingleInstanceHost" para la aplicación Silverlight, que se puede establecer en el Archivo de Manifiesto de la Aplicación. Msdn dice que "Indica si la aplicación tiene un único host de instancia".Indicador "SingleInstanceHost" para la aplicación Silverlight

¿Alguien puede explicar qué significa esta bandera?

Mi prueba:

  1. Si funciono mi aplicación WP7 Silverlight en el dispositivo Sin este indicador, a continuación, si trato de ejecutar la segunda instancia aplicación desde el menú de inicio - el sistema mata a la primera instancia y corre el uno nuevo.

  2. Si ejecuto mi aplicación wp7 silverlight en el dispositivo CON esta bandera, entonces si intento ejecutar la segunda instancia de la aplicación desde el menú de inicio, el sistema mata la 1ª instancia y NO ejecuta la nueva.

Strange behaviour!

+0

¿Realmente nadie lo sabe? – Dilnara

+1

Puede encontrar una [misma propiedad en la plataforma de aplicaciones de Windows Media Center SDK] (http://msdn.microsoft.com/en-us/library/windows/desktop/ee525779.aspx). ¿Es esto una pista? No lo sé. :) La documentación es muy clara _Indica si la aplicación tiene un host de instancia única _... MS, por favor, complete la documentación: D – Tonio

Respuesta

0

Silverlight 3 introdujo una forma para que las aplicaciones se comuniquen entre sí, ya sea en la misma página o instanciadas en instancias de navegador diferentes (funciona incluso con aplicaciones Instaladas/OOB). La comunicación se realiza por las clases de emisor y receptor, que intercambian mensajes a través de canales con nombre. Cada receptor debe registrar un nombre único para el canal o se lanzará una excepción.

Y ese es el truco. Escuchar en un canal específico específico actuará como un mutex. Al capturar la excepción ListenFailed, obtiene una opción para mostrar el mensaje apropiado o iniciar una versión diferente de la aplicación. Todo el trabajo se hace en el archivo 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(); 
} 
} 
+1

No entendí, ¿Cómo se relaciona su respuesta con el indicador 'SingleInstanceHost'? ¿Podrías aclararlo por favor? – CAMOBAP

+1

Es la manera de tener una instancia única de una aplicación SL pero no una explicación de la bandera 'SingleInstanceHost'. – Tonio

Cuestiones relacionadas