2012-09-26 13 views
6

Znalazłem interesującą flagę o nazwie "SingleInstanceHost" dla aplikacji silverlight, którą można ustawić w pliku Manifestu aplikacji. Msdn mówi, że "wskazuje, czy aplikacja ma hosta z pojedynczą instancją".Flaga "SingleInstanceHost" dla aplikacji Silverlight

Czy ktoś może wyjaśnić, co oznacza ta flaga?

Moje testy:

  1. Jeśli uruchomię mojej aplikacji WP7 silverlight na urządzeniu bez tej flagi, to jeśli próbuję uruchomić drugą aplikację instancji z menu start - system zabija 1st wystąpienie i uruchamia nowy.

  2. Jeśli uruchomię moją aplikację silverlight wp7 na urządzeniu Z tą flagą, to jeśli spróbuję uruchomić drugą instancję aplikacji z menu startowego - system zabije pierwszą instancję i NIE uruchomi mojej nowej.

Dziwne zachowanie!

+0

Naprawdę nikt nie wie? – Dilnara

+1

Można znaleźć [taką samą właściwość w zestawie SDK platformy aplikacji systemu Windows Media Center] (http://msdn.microsoft.com/en-us/library/windows/desktop/ee525779.aspx). Czy to jest wskazówka? Nie wiem. :) Dokumentacja jest bardzo ligh _ Wskazuje, czy aplikacja ma hosta z jednym wystąpieniem _... MS, proszę, uzupełnij dokumentację: D – Tonio

Odpowiedz

0

Silverlight 3 umożliwił aplikacjom komunikowanie się między sobą na tej samej stronie lub tworzenie instancji w różnych instancjach przeglądarki (działa nawet z aplikacjami Installed/OOB). Komunikacja odbywa się za pomocą klas nadawcy i odbiorcy, które wymieniają wiadomości za pośrednictwem nazwanych kanałów. Każdy odbiornik musi zarejestrować unikalną nazwę kanału lub zostanie zgłoszony wyjątek.

I to jest podstęp. Słuchanie na konkretnym nazwanym kanale będzie działać jak muteks. Przez uchwycenie wyjątku ListenFailed otrzymujesz opcję wyświetlenia odpowiedniego komunikatu lub uruchomienia innej wersji aplikacji. Cała praca jest wykonywana w pliku 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

Nie rozumiem, Jak Twoja odpowiedź dotyczy flagi 'SingleInstanceHost'? Czy mógłbyś wyjaśnić? – CAMOBAP

+1

Jest to sposób na utworzenie pojedynczej instancji aplikacji SL, ale nie wyjaśnienie flagi 'SingleInstanceHost'. – Tonio