アクセスカウンタ

<<  2009年4月のブログ記事  >>  zoom RSS

トップへ


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

2009/04/14 11:14

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

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;
   }
記事へなるほど(納得、参考になった、ヘー) ブログ気持玉 4 / トラックバック 0 / コメント 1


SilverlightとWindowsFormsのServiceReferenceの違い

2009/04/13 15:39

CodeZineのこの記事で作った方法だと、WindowFormsアプリケーションでサービス参照の追加時に非同期メソッドが追加されないんです。と質問を受けたのでちょっと確認。

通常、Visual Studio のサービス参照の追加から下のような画面を表示して、WebサービスやWCFサービスの参照設定を行う訳だけれど、Silverlightは非同期通信のみのサポートになるため、WindowsFormsなんかで作成するときと「詳細設定...」ボタンをクリックしたときの動作が変わります。

image

WindowForms

image

  • 非同期操作の生成チェックボックスをONにしないと非同期メソッドがProxyクラスに追加されない。
  • Web参照の追加ボタンから、Visual Studio 2005 で作成するWebサービス参照と同じProxyクラスを追加できる。

Silverlight

image

  • Silverlight は非同期通信のみのサポートなので、デフォルトで非同期操作の生成チェックボックスがONになり、レーアウトされ変更できない。
  • Silverlightでは、WCFのみのサポートとなるため、Web参照の追加ボタンは表示されない。
記事へなるほど(納得、参考になった、ヘー) ブログ気持玉 1 / トラックバック 0 / コメント 2


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

2009/04/13 14:54

アプリケーションのネットワーク状況を検知する。

Silverlight 3 では、起動している Silverlight 3 アプリケーションのネットワーク状況を取得するプロパティが有ります。現在のアプリケーションのネットワーク状況を主とする場合、System.Net.NetworkInfomation.NetworkInterface クラスの GetIsNetworkAvailable メソッドを使用して調査を行います。

また、イベントハンドラを登録しておけば、ネットワークの状況が切り替わった際に検知を行う事が出来ます。

次のコードは、MainPage.xaml が読み込まれた際にネットワークの状況を検知するイベントハンドラを登録し、現在のネットワークの状況をMessageBoxで表示するコードです。


public MainPage()
{
    InitializeComponent();
    NetworkChange.NetworkAddressChanged += NetworkChange_NetworkAddressChanged;
}

public void NetworkChange_NetworkAddressChanged(object sender, EventArgs e)
{
    if (NetworkInterface.GetIsNetworkAvailable())
        MessageBox.Show("生きてる");
    else
        MessageBox.Show("死んだ");
}
記事へなるほど(納得、参考になった、ヘー) ブログ気持玉 3 / トラックバック 0 / コメント 0


@IT会議室が変わるらしい

2009/04/01 20:36

ここしばらく忙しくて全く顔が出せていない@ITのInsider.NET会議室ですが、システム変更の関係でいろいろな事が変わるらしいです。

いま@ITの会議室にアクセスするとこんな画面が上部に表示されます。
 @IT

@ITからのメールでは他にもこんな変更点が

  • 評価機能を新設
  • 称号の終了
  • プライベートメッセージ機能の終了
  • 公開プロファイル情報の項目削除

僕が@ITに出入りを始めたのは...というか回答活動自体を始めたのが@ITの今のシステムからなので何となく感慨深い物があります。
たぶんここがなかったらMVPなんてやってなかったと思うし、いまのいろんな方面の知り合いにも知り合えなかったかもしれない。

決して無くなるわけではないので良い方向に変わってくれるのを期待しています。
いままでは@IT側はほとんど管理を放棄している感じだったので、こういった機会に見直されるのは良いことだよね。

記事へなるほど(納得、参考になった、ヘー) ブログ気持玉 1 / トラックバック 0 / コメント 0


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

2009/04/01 18:23

Silverlight 3 Beta 1 では、ブラウザにロードしたSilverlightアプリケーションをコンピュータにインストールしてオフラインで動作させる機能が追加されています。
ちょっと時間ができたので、このオフライン機能をちょっと突っついて見ようと思います。

開発環境に関しては、こぐまさんの記事が注意点を含め詳しく書いているのでこちらを参照してもらうとして、さっそくSilverlight3のプロジェクトをつくってデバック実行してみました。

 

早速実行

Visual StudioからF5して早速実行
...あれ?ブラウザを右クリックすると確かに 「install onto this computer ...」というメニューが出るんだけれど、グレーアウトされていて使えない...
image

 マニフェストファイルの編集

Silverlight3のオフライン機能を有効化するには、アプリケーションのマニフェストファイルに記述が必要みたい。
Silverlight3 Tool のデフォルト設定では、マニフェストファイルを自動生成する設定になっているんだけれど、もしマニフェストファイルがはき出されない場合は、プロジェクトの「Silverlight マニフェスト ファイルを生成する」の項目をチェックしてコンパイルしてください。
image 
マニフェストファイルは、Propertiesフォルダに生成されるのでAppManifest.xmlを開いて中を確認してみる。
image

オフライン機能を有効にするコードがコメントアウトされているので、コメントを外してくれと書いてある部分を有効にしてやります。この内容はAssembryInfoが自動的にインポートされるわけではないようなので、アプリケーションの情報は自分で編集してあげます。こんな感じ

<Deployment xmlns="http://schemas.microsoft.com/client/2007/deployment&quot;
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml&quot;
>
<Deployment.Parts>
</Deployment.Parts>

<Deployment.ApplicationIdentity>
<ApplicationIdentity
ShortName="オフラインのサンプル"
Title="Silverlightオフライン機能のサンプル">
<ApplicationIdentity.Blurb>プログラムの詳細</ApplicationIdentity.Blurb>
</ApplicationIdentity>
</Deployment.ApplicationIdentity>
</Deployment>

再度実行すると...出てきました。
image



 インストール 
インストール先を選択してOKボタンをクリックすればインストール完了

Silverlightのオフライン機能のインストールはブラウザを起動しているユーザーの権限で動作するので、オフライン機能のインストールには管理者権限なんかは必要ないです。
image

きっちりスタートメニューに登録されて、ここから起動もできます。
image

インストール先
こいつのショートカットのプロパティを見ると、Targetにこんな文字列が

"C:\Program Files\Microsoft Silverlight\3.0.40307.0\sllauncher.exe" localhost.0

sllauncher とか言うやつがブラウザの代わりにSilverlightアプリケーションをホストしているようです。後ろの localhost.0 がインストールされたアプリケーションの情報ということになる。探したらここにいた。

C:\Users\xxxxxxxx\AppData\LocalLow\Microsoft\Silverlight\Offline\localhost.0

次は気になるネットワーク機能をさわってみる。

記事へなるほど(納得、参考になった、ヘー) ブログ気持玉 5 / トラックバック 0 / コメント 1


<<  2009年4月のブログ記事  >> 

トップへ

かるあ のメモ 2009年4月のブログ記事/BIGLOBEウェブリブログ
文字サイズ:       閉じる