Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

“なめらか”なメトロスタイルアプリを作るために ~WinRT の非同期性を活用したアプリ開発~

23,726 views

Published on

VSUG DAY 2012 Summer のセッション資料です。

Published in: Technology
  • Be the first to comment

“なめらか”なメトロスタイルアプリを作るために ~WinRT の非同期性を活用したアプリ開発~

  1. 1. VSUG DAY – Summer ( 2012.06.16 )“ なめらか”な    メトロスタイルアプリを        作るために~ WinRT の非同期性を活用したアプリ開発~ 青柳 臣一
  2. 2. 自己紹介 Twitter: @ShinichiAoyagi ブログ : http://shinichiaoyagi.blogspot.jp/ 仕事 職場 自宅 ソフトウエア開発 大阪 大阪 WPF 、 Silverlight 、 淀屋橋 吹田 C# 、 VB 、 VSUG DAY - Winter 2012.06.16
  3. 3. “ なめらか”• タッチ – マウス以上に遅延に敏感になる• フィードバック – HDD のアクセスランプ• メトロスタイルアプリのライフサイクル – 起動→サスペンド→再起動→… VSUG DAY - Winter 2012.06.16
  4. 4. 非同期• WinRT では多くの API が非同期 – 50ms 以上かかる API は基本的に非同期 – 非同期メソッドがある場合は同期版は無し• 非同期メソッドは末尾に “ Async” – ファイル作成 • StorageFolder.CreateFileAsync() – ファイル検索 • StorageFolder.CreateFileQuery() のあと GetFilesAsync() VSUG DAY - Winter 2012.06.16
  5. 5. Asynchronous / Await• Asynchronous – 発音記号 eɪ síŋkrənəs – 「エイシンクロナス」 – 日本での発音は「アシンクロナス」が一般的 ?• Await – 発音記号 əwéɪ t – 「アウエイト」• 今日は「アシンクロナス」 VSUG DAY - Winter 2012.06.16
  6. 6. サンプル (1) VSUG DAY - Winter 2012.06.16
  7. 7. サンプル (2)• async/await を使うと簡単すっきり VSUG DAY - Winter 2012.06.16
  8. 8. async / await• 魔法ではない – C# / VB コンパイラががんばってコードを作 っている – 詳細は C# Language Specification 5.0 に記 載(たぶん、きっと) • 今は以下にあり • 「 C# Language Specification for Asynchronous Functions 」 http://www.microsoft.com/en-us/download/details.aspx?id=23753 VSUG DAY - Winter 2012.06.16
  9. 9. 自作 Async メソッド• async メソッドの戻り値 – void 、 Task 、 Task<T> のいずれかのみ VSUG DAY - Winter 2012.06.16
  10. 10. キャンセル / 進捗• キャンセル – CancellationToken と CancellationTokenSource• 進捗 – IProgress<T> VSUG DAY - Winter 2012.06.16
  11. 11. async / await の注意点 (1)• await から下はあくまで非同期 – 見た目にだまされるとまずい – ときにはきちんとロックが必要かも – ローカル変数なら(ほぼ)安心 • けど、魔法みたいになっちゃうことも VSUG DAY - Winter 2012.06.16
  12. 12. async / await の注意点 (2)• await 後は必ず UI スレッドに返ってくる – 必要ないときは await XxxAsync() .ConfigureAwait(continueOnCapturedContext:false); await XxxAsync().ConfigureAwait(false); VSUG DAY - Winter 2012.06.16
  13. 13. ご清聴ありがとうございました VSUG DAY - Winter 2012.06.16

×