Windows8 の非同期処理は、イベント用のコールバックメソッドを用意するのでは無く、同期処理のようにソース行の記述と同じ順序で処理を実行する事ができます。その為に必要な記述方法として、await 演算子とasync キーワード が用意されています。 await 演算子を使うメソッドには、async キーワードでマークされた宣言が必要です。 非同期メソッドの戻り値の型は Task または Task<TResult> です。 最も外側のメソッドで try/catch ブロックを使うと、ネストされている非同期メソッドのエラーをキャッチできます(同期メソッドで例外をキャッチする方法と同様)。 Microsoft の解説ページ 非同期 API の呼び出し FileOpenPicker.PickSingleFileAsync
// 呼び出し側 private async void Open_Click(object sender, RoutedEventArgs e) { ResetPersistedState(); ResetSessionState(); try { rootPage.NotifyUser("Opening image file...", NotifyType.StatusMessage); StorageFile file = await Helpers.GetFileFromOpenPickerAsync(); await DisplayImageFileAsync(file); rootPage.NotifyUser("Loaded file from picker: " + file.Name, NotifyType.StatusMessage); } catch (Exception err) { rootPage.NotifyUser("Error: " + err.Message, NotifyType.ErrorMessage); ResetSessionState(); ResetPersistedState(); } } // 非同期メソッド public static async Task<StorageFile> GetFileFromOpenPickerAsync() { // Attempt to ensure that the view is not snapped, otherwise the picker will not display. if (ApplicationView.Value == ApplicationViewState.Snapped && !ApplicationView.TryUnsnap()) { throw new Exception("File picker cannot display in snapped view."); } FileOpenPicker picker = new FileOpenPicker(); FillDecoderExtensions(picker.FileTypeFilter); picker.SuggestedStartLocation = Windows.Storage.Pickers.PickerLocationId.PicturesLibrary; StorageFile file = await picker.PickSingleFileAsync(); if (file == null) { throw new Exception("User did not select a file."); } return file; }
▲ サンプル全体はこちらから参照できます
|
【Win8 ストアアプリの最新記事】
- C# : HttpClient で Post と Get する汎用 static クラス
- Win8.1 ストアアプリ(JS) : Visual Studio 2013 で Three.js(v65) の WebGLRenderer の動作を確認しました
- WinJS ストア : Three.js を組み込んで、『画像を飛ばす』テンプレート( Bird.js を利用 )
- WinJS ストア : 『背景画像をチェンジする2画面アプリ』のテンプレート
- VS2012ストア(C#) : WebView テンプレート
- VS2012(C#)ストア : ListView Twitter 検索テンプレート
- イラストを背景にして2ページの画面遷移を解りやすくした Windows Store テンプレート
- Twitter API の自分のアプリのトークンを使って投稿するだけの class VS2012_Twitter
- Win8 ストア(C#) / PDF viewer sample (Windows 8.1)
- ストアアプリの TextBox のスクロールバー
- Win8 ストアアプリの、メモリ上にページを残す画面遷移と、前画面のコントロールの参照
- Win8 ストアアプリで、『選択肢を応答するダイアログ』を簡単に使うための MessageBox クラス
- Win8 ストアから Post 投稿
- Win8ストア XAML の AppBarButtonStyle のContent に指定する 16進数 Unicode の取得
- Win8 ストア : UrlEncode と UrlDecode
- Win8 ストア : HttpClient + XDocument で RSS の取得
- Win8 ストア : リストボックス テンプレート
- Win8 ストア : ファイルアクセス テンプレート
- Win8 ストア : ストアブランク テンプレート
- AppBar テンプレート / Win8 ストアアプリ(C#)