Silverlight 3 のオフライン機能を突っついてみる その3

アプリケーションの状態を取得する。

Silverlight でアプリケーションが、Offline(Detach)なのか、OnLineなのかを調べるためには、Application の ExecutionState を調査する。

たとえば、プログラム起動時に、アプリケーションの状態を取得する場合は、App.xaml.cs 中で、this.ExecutionState の値を調査すれば解るし、各ページからアプリケーションの状態を調査する場合は、System.Windows.Application.Current.ExecutionState の値を調査すれば良い。

ExecutionStateは次の5つが有るんだけれど、DetachedUpdatesAvailableがいまいち解らない。こいつ何時発生するんだろう。。。

Detached    デタッチで稼働中
Detaching    デタッチ中
DetachFailed    デタッチに失敗
RunningOnline    オンラインで稼働中
DetachedUpdatesAvailable    ???

 

アプリケーションの状態の変化をイベントで検出する

アプリケーションの状態が変化したときに何かの処理を行い体場合は、Application の ExecutionStateChanged イベントを設定する事で検知が出来る。例えば、App.xaml.cs 中でイベントを捕捉したいなら、こんな風に書けばいい。


this.ExecutionStateChanged += (sender, e) =>
{
   switch (ExecutionState) {
       case ExecutionStates.Detached:
           MessageBox.Show("Detached");
           break;
       case ExecutionStates.DetachedUpdatesAvailable:
           MessageBox.Show("DetachedUpdatesAvailable");
           break;
       case ExecutionStates.DetachFailed:
           MessageBox.Show("DetachFailed");
           break;
       case ExecutionStates.Detaching:
           MessageBox.Show("Detaching");
           break;
       case ExecutionStates.RunningOnline:
           MessageBox.Show("RunningOnline");
           break;
       default:
           break;
   }

この記事へのコメント

2009年04月14日 22:47
DetachedUpdatesAvailableは新しいバージョンがダウンロード&使用可能になった時に発生するそうです。

この記事へのトラックバック