泥庭

2011年4月3日

アプリケーション管理の概要 – アプリケーションの有効期間(前編)

Filed under: .NET, WPF — タグ: , , — yone64 @ 11:51 PM

さてすっかり間が開いてしまいましたが、WPFでMSDNの続きです。間が開いたので下に一覧を載せておきます。ってかまだまだじゃねぇか。

でも、アプリケーションの有効期間って長いんですよね。ざっとこんな感じ

まあサクサク行きましょう。

スプラッシュスクリーン
スプラッシュスクリーンの説明は、例によって
Wikipediaに譲ります。
.NETでスプラッシュスクリーン(何度も出てくると長いな)といえば、VB.NETだと思っていたのですが(
@IT)、←C#にはなかった。
WPFでは表示出来るようです。 でも、その追加方法が若干特殊。詳しくは→
http://msdn.microsoft.com/ja-jp/library/cc656886.aspx
※ 1プロジェクトに複数スプラッシュスクリーンが設定されているとコンパイルエラーとなります。どの画像がスプラッシュスクリーンに設定されているかは、1画像ずつビルドアクションを確認するか、csprojファイルを直接テキストエディターで確認するしかないようです。

で、そのスプラッシュスクリーンがいつまで表示されているかというと、アプリケーションの最初のウインドウのContentRenderedが終わる前までは、表示されているようです。なので、WindowクラスのLoadedやContentRenderdで時間のかかる処理を行うと、スプラッシュスクリーンが表示されているままWindowも表示されるという状態になります。

なお、スプラッシュスクリーンを追加すると、次のようにSplashScreenクラスを利用したコードが追加されます。

/// <summary>
/// Application Entry Point.
/// </summary>
[System.STAThreadAttribute()]
[System.Diagnostics.DebuggerNonUserCodeAttribute()]
public static void Main() {
    SplashScreen splashScreen = new SplashScreen("desert.jpg");
    splashScreen.Show(true);
    WpfApplication3.App app = new WpfApplication3.App();
    app.InitializeComponent();
    app.Run();
}

アプリケーションの起動・ユーザーインターフェースの表示・コマンドライン引数の処理
これらは、Application.
Startupイベントに関する記載です。
Startupイベントは、ApplicationオブジェクトのRunメソッドが呼び出されると発生します。イベント引数にはコマンドライン引数が渡ってくるので、ココで処理することになります。また、MainWinowを作成することのできる場所の一つです。

もう一つは、StartupUriを利用する方法。通常VisualStudioでプロジェクトを作成するとこちらの方法で記述されます。

<Application x:Class="WpfApplication3.App"
             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
             StartupUri="MainWindow.xaml" >

ただし、StartupUriを利用してWindowを作成した場合、StartupイベントではそのWindowのインスタンスにアクセスすることが出来ません。
ですから、MainWindowのインスタンスにゴニョゴニョしたい場合は、StartUpで初期化、特に何もする必要がない場合はStartupUriで記載するのが良さそうです。

アプリケーションのアクティブ化および非アクティブ化
アプリケーションがアクティブになったときおよび非アクティブになった場合に、イベントが発生します。
MSDNによると、

アクティブになったときとは、

  • 起動され、Window を表示した。

  • ユーザーがそのアプリケーションの Window を選択して別のアプリケーションから切り替えた。

非アクティブになったときとは、

  • ユーザーが現在のアプリケーションから別のアプリケーションに切り替えた。

  • アプリケーションがシャットダウンされた。

とのことです。ただし、「起動され、Windowを表示した」場合のイベントは、スプラッシュスクリーンを設定すると発生しないようです。
(バグっぽいのでとりあえず
Connectにあげておきました。)

長いのでとりあえず、前編としました。。

広告

コメントする »

まだコメントはありません。

RSS feed for comments on this post. TrackBack URI

コメントを残す

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

WordPress.com ロゴ

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

Twitter 画像

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

Facebook の写真

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

Google+ フォト

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

%s と連携中

WordPress.com で無料サイトやブログを作成.

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