6

アプリケーション マニフェスト ファイルで設定できる、Silverlight アプリ用の「SingleInstanceHost」という名前の興味深いフラグを見つけました。Msdn は、「アプリケーションに単一インスタンス ホストがあるかどうかを示します」と述べています。

このフラグの意味を説明できる人はいますか?

私のテスト:

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

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

奇妙な行動!

4

1 に答える 1

0

Silverlight 3 では、同じページ上で、または別のブラウザー インスタンスでインスタンス化された (インストール済み/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();
}
}
于 2013-06-03T12:01:10.447 に答える