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