(土)、VSハッカソン倶楽部さん主催の非同期勉強会に参加/登壇してきました。#23以来、2カ月ぶり2回目。このように呼んで頂けるのは大変ありがたいことです。Tips先日7月20日、@neueccさんがASP.NETでの定期的なモニタリング手法ということで、Webアプリケーションの状況把握のためにThreadPoolのスレッド数を監視をしていると書いておられました。機械的読み替えに注意Asyncasync/awaitの挙動は非同期ですが、見た目はほぼほぼ同期的なコードと同じです。WCAF」に参加してきました。北陸のプログラマーとデザイナーで集まって交流しましょうというのが目的でした。単体テストの記述方法Async近年の開発では単体テストがとても重要視されています。Serverなどの進化を見ても、それが良く出ています。Awaitableパターンの自前実装で独自型のawaitの方法を紹介しました。5.0で搭載されたキーワードです。4.5をターゲットとする必要があります。相互運用性について見ていきます。Awaitableパターンの自前実装Async前回はawaitするためのコンパイラ要件について確認しました。コンパイラは独自型をawaitするための汎用性を残した展開を行います。ここでは実際にAwaitableな型を自前実装してみます。コンパイラ要件Async前回は非同期メソッドの内部実装/展開のされ方を追いかけてみました。(当然ですが)コンパイラは一定の規約に沿ってこのような変換を行います。前回の内容を思い出しながら、非同期メソッドにするためのコンパイラ要件を見て行きましょう。内部実装を覗くAsync非同期メソッドはまるで魔法のようです。非同期処理が同期処理とほとんど同じ書き方ができるなんて、もはや革命です。「今まで非同期処理のコーディングに充ててきた時間をすべて返してほしい」とさえ言いたくなるくらいです。例外処理Asyncここまで、非同期メソッドの基本的な使い方について見てきました。概要の最後として、例外処理の書き方を見ておきましょう。実は下に示すように、例外処理についても同期コードとほぼほぼ同じ書き方で対応することができます。戻り値Asyncこれまであまり意識して来ませんでしたが、非同期メソッドにももちろん戻り値は必要です。戻り値には以下のいずれかを指定します。通常のメソッド同様、非同期メソッドでもreturn文を書かない場合には戻り値にvoidを指定できます。async修飾子とawait演算子でも簡単に書きましたが、await以降の処理はコンパイラによって継続渡しという形に変換されます。そのときのサンプルを再掲します。任意の記述場所Asyncasync修飾子やawait演算子は、前回紹介したサンプルのような利用箇所に留まりません。適用可能箇所は以下の通りです。async修飾子とawait演算子Async非同期メソッドを実装する上で必要なキーワードはasync修飾子とawait演算子のふたつです。これらを押さえておきましょう。非同期メソッドの繰り返しです。Frameworkがこれまで提供してきた非同期処理について復習しておきましょう。図示すると大体以下のような感じだと思います。以下、これらについてコードを交えながら簡単に見ていきます。2012の北陸会場で発表したときの資料を公開します。vol.8のLTで喋らせて頂いたときの資料を公開します。準備不足でミスってたところがあったので、ちょこっとだけ手直ししてあります。興味を持たれた方は、内容は大したことないですが覗いてみてください。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。