2. 必要であればIApplicationLifetimeAwareインターフェースの実装
アプリケーション拡張サービスに登録するためには、最低限IApplicationServiceインターフェースさえ実装していれば問題ありませんが、複数のサービスが関連を持って初期化を行う必要がある時など複雑な初期化を行いたい場合、IApplicationLifetimeAwareインターフェースを実装して細やかな初期化コードを記述できます。
メソッド名を見ればどのような場合に呼び出されるかは一目瞭然ですが、表1にIApplicationLifetimeAwareのメソッド一覧を示します。
| メソッド名 | 呼び出されるタイミング |
| Starting | アプリケーション開始前に実行されます |
| Started | アプリケーション開始後に実行されます |
| Exiting | アプリケーション終了前に実行されます |
| Exited | アプリケーション終了後に実行されます |
3. サービスを登録
サービスをアプリケーションに登録するためには、App.xamlのApplication.ApplicationLifetimeObjectsプロパティに追加したサービスを定義する必要があります。リスト6は今回作成したCustomService1をApp.xamlに登録した例です。
<Application xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:service="clr-namespace:FrameworkSample;assembly=FrameworkSample"
x:Class="Silverlight3_7Sample.App"
>
<Application.Resources>
</Application.Resources>
<Application.ApplicationLifetimeObjects>
<service:CustomService1 />
<!-- 複数のサービスを登録することも可能 -->
<!-- <service:CustomService2 /> -->
</Application.ApplicationLifetimeObjects>
</Application>
さて、準備が終わったので早速実行してみましょう。
図2はリスト3で格納したMyContextの値にMainPageからアクセスした際のウォッチ式の内容です。
アプリケーション拡張サービスはその性質から、一般の開発者が直に触ることはあまりないかもしれませんが、こんな機能があるんだ程度に覚えておくと良いでしょう。

