2012-09-26 8 views
6

Silverlightアプリケーションの "SingleInstanceHost"という興味深いフラグが見つかりました。これはApplication Manifest Fileで設定できます。 Msdnは、 "アプリケーションに単一のインスタンスホストがあるかどうかを示します"と言います。Silverlight Appの "SingleInstanceHost"フラグ

誰でもこの旗の意味を説明できますか?

私のテスト:

  1. 私は、このフラグがないデバイス上で私のWP7のSilverlightアプリを実行する場合、私は、スタートメニューから2番目のアプリインスタンスを実行しようとした場合、その後 - システムは第一のインスタンスを殺すし、実行します新しいもの

  2. このフラグを持つデバイスで私のwp7 silverlightアプリケーションを実行すると、スタートメニューから2番目のアプリケーションインスタンスを実行しようとすると、システムは1番目のインスタンスを強制終了し、新しいインスタンスを実行しません。

奇妙な動作!

+0

本当に誰も知らないのですか? – Dilnara

+1

[Windows Media CenterアプリケーションプラットフォームSDK](http://msdn.microsoft.com/en-us/library/windows/desktop/ee525779.aspx)にも同じプロパティがあります。これは手掛かりですか?私は知らない。 :)ドキュメントは非常に軽い_アプリケーションが単一のインスタンスホストを持っているかどうかを示しています_... MS、ドキュメントを完成してください: – Tonio

答えて

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(); 
} 
} 
+1

あなたの応答が 'SingleInstanceHost'フラグにどのように関係していましたか?明確にしていただけますか? – CAMOBAP

+1

これは、SLアプリケーションの単一インスタンスを持つが、 'SingleInstanceHost'フラグの説明を持たない方法です。 – Tonio

関連する問題