泥庭

2011年2月22日

アプリケーション管理の概要 – 現在のアプリケーションの取得

Filed under: .NET, WPF — タグ: , , — yone64 @ 10:30 PM

第4回。現在のアプリケーションの取得

Application.Currentを利用して、アプリケーション全体で共有されるApplicationクラスのインスタンスを取得することが出来ます。
(参照)
方法 : 現在のアプリケーション オブジェクトを取得する

Application クラスのサービスはアプリケーション全体で共有されるため、Application クラスのインスタンスとして AppDomain につき 1 つだけ指定できます。

Current は、Application クラスのインスタンスへの参照を返します。 Application 派生クラスへの参照が必要な場合、Current プロパティの値を、次の例に示すようにキャストしなければなりません。

// Get strongly-typed current application
App app = (App)App.Current;

Applicationクラスはシングルトンであり、一つのAppDomain内で複数回初期化すると、「同じ AppDomain 内で、複数の System.Windows.Application インスタンスを作成することはできません。」という内容のInvalidOperationExceptionが発生します。ただし、Currentプロパティーへのアクセス時にApplicationクラスが初期化されるわけではなく、未初期化の場合はCurrentプロパティーはNullを返します。
また、戻り値の型がApplication型であるため、必要に応じキャストが発生します。ただし、デザイン時にはAppクラスが取得できるわけではなく、デザイン環境により異なるクラスが取得できます。

そのため、デザイナから呼び出されるコードでは、CurrentプロパティーのNullチェックおよび型チェックはしておきましょう。

VisualStudio2010でデザイン時のApplication.Currentの型(左上)と実行時の型(右下)
image

Expression Blendでのデザイン時
image

(参照)WPF および Silverlight デザイナー読み込みエラーのトラブルシューティング – デザイン時のコードの作成

広告

1件のコメント »

  1. […] 現在のアプリケーションの取得 […]

    ピンバック by アプリケーション管理の概要 – アプリケーションの有効期間(前編) « 泥庭 — 2011年4月7日 @ 9:54 PM


RSS feed for comments on this post. TrackBack URI

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中

WordPress.com Blog.

%d人のブロガーが「いいね」をつけました。