“なめらか”なメトロスタイルアプリを作るために ~winrt...

13
“ なななな”な ななななななななななな ななななな WinRT ななななななななななななななな青青 青VSUG DAY – Summer 2012.06.16

Upload: shinichiaoyagi

Post on 28-May-2015

10.992 views

Category:

Technology


0 download

DESCRIPTION

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

TRANSCRIPT

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

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

VSUG DAY – Summer ( 2012.06.16 )

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

VSUG DAY - Winter 2012.06.16

自己紹介

仕事ソフトウエア開発

WPF 、 Silverlight 、C# 、 VB 、

職場

大阪淀屋橋

自宅

大阪吹田

Twitter: @ShinichiAoyagi

ブログ : http://shinichiaoyagi.blogspot.jp/

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

VSUG DAY - Winter 2012.06.16

“ なめらか”

• タッチ– マウス以上に遅延に敏感になる

• フィードバック– HDD のアクセスランプ

• メトロスタイルアプリのライフサイクル– 起動→サスペンド→再起動→…

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

VSUG DAY - Winter 2012.06.16

非同期

• WinRT では多くの API が非同期– 50ms 以上かかる API は基本的に非同期– 非同期メソッドがある場合は同期版は無し

• 非同期メソッドは末尾に “ Async”– ファイル作成

• StorageFolder.CreateFileAsync()

– ファイル検索• StorageFolder.CreateFileQuery() のあと

GetFilesAsync()

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

VSUG DAY - Winter 2012.06.16

Asynchronous / Await

• Asynchronous– 発音記号 eɪsíŋkrənəs– 「エイシンクロナス」– 日本での発音は「アシンクロナス」が一般的

?• Await

– 発音記号 əwéɪt– 「アウエイト」

• 今日は「アシンクロナス」

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

VSUG DAY - Winter 2012.06.16

サンプル (1)

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

VSUG DAY - Winter 2012.06.16

サンプル (2)

• async/await を使うと簡単すっきり

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

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

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

VSUG DAY - Winter 2012.06.16

自作 Async メソッド

• async メソッドの戻り値– void 、 Task 、 Task<T> のいずれかのみ

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

VSUG DAY - Winter 2012.06.16

キャンセル / 進捗

• キャンセル– CancellationToken と

CancellationTokenSource

• 進捗– IProgress<T>

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

VSUG DAY - Winter 2012.06.16

async / await の注意点 (1)

• await から下はあくまで非同期– 見た目にだまされるとまずい– ときにはきちんとロックが必要かも– ローカル変数なら(ほぼ)安心

• けど、魔法みたいになっちゃうことも

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

VSUG DAY - Winter 2012.06.16

async / await の注意点 (2)

• await 後は必ず UI スレッドに返ってくる– 必要ないときは

await XxxAsync() .ConfigureAwait(continueOnCapturedContext:false);

await XxxAsync().ConfigureAwait(false);

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

VSUG DAY - Winter 2012.06.16

ご清聴ありがとうございました