xin9le.net

Microsoft の製品/技術が大好きな Microsoft MVP な管理人の技術ブログです。

2012-01-01から1年間の記事一覧

非同期メソッド入門 (13) - コンパイラ要件違反

以前、非同期メソッド入門 (8) - コンパイラ要件と非同期メソッド入門 (9) - Awaitableパターンの自前実装で独自型のawaitの方法を紹介しました。TaskCompletionSource<T>という強力な助っ人もいることもあり、実際どれほど独自実装をするケースがあるのかは本</t>…

非同期メソッド入門 (12) - .NET Framework 4.5以外でawaitする

async/awaitはC# 5.0で搭載されたキーワードです。このキーワードを使ったコードのコンパイルを通すには、Visual Studio 2012で.NET Framework 4.5をターゲットとする必要があります。ここまでの連載は、すべてそう設定されていることを前提として紹介してき…

拡張DisplayName属性

C#が「とっても×6 だーいすーきよー?」な皆さん、こんにちは!今回の記事はC# Advent Calender 2012の22日目の記事です。投稿日付が23日?...野暮なこと言っちゃいけません。ちっちゃなことは気にしちゃいけません。誰が何と言おうと、22日目の記事です(棒 …

Windows RTでリモートデバッグ

みなさん、こんにちは!昨日@chack411さんから「北陸のエース」とご紹介に預かりまして、大変恐縮しております、@xin9leです。今回の記事はVisual Studio Advent Calendar 2012の21日目の記事ですが、21日目を担当することになったのが一昨日とあって、完全…

DynamicなTempData

ASP.NETが大好きでたまらない.NETギークな皆さん、この年末をいかがお過ごしでしょうか。僕はと言えば、衆議院選挙の絡みで#携帯職人や#携帯インストラクターとしてASP.NETどころかプログラミングと絶縁無縁な日々を過ごしております(白目。プログラミング、…

非同期メソッド入門 (11) - Rxとの相互運用

Rx (=Reactive Extensions) は、イベントや非同期処理をLINQの形で統一的に記述できる準標準 (=.NET Frmaeworkに標準搭載されていないMicrosoft純正の) ライブラリです。これまでRxは.NET Framework 3.5 / .NET Framework 4環境下では非同期処理をするための…

WCAF vol.9 資料

WCAF vol.9で利用したプレゼン資料を公開します。WCAFの参加/登壇はvol.8のときから2回連続でした。今回はUXがテーマ。僕がデザイナーさんたちにできるUXのお話と言えば、1年近く触り続けてきたWindows 8だけだと当初から考えていて、全力でWindows 8で採用…

非同期メソッド入門 (10) - WinRTとの相互運用

今回はWindows 8に新しく搭載されたAPI、WinRT (=Windows Runtime) との相互運用性について見ていきます。WinRTはMetroスタイルアプリケーションを作るためのAPIで、これまでのWin32 APIとはかなり毛色が違い、オブジェクト指向なAPIに生まれ変わっています…

非同期メソッド入門 (9) - Awaitableパターンの自前実装

前回はawaitするためのコンパイラ要件について確認しました。コンパイラは独自型をawaitするための汎用性を残した展開を行います。ここでは実際にAwaitableな型を自前実装してみます。 Awaitableパターンの実装 Awaitable型 まずawait演算子に渡すAwaitable…

Special Seminar #1 資料

8月の終わり、ignoteの代表取締役社長である@hIDDEN_xvさんから半ば強引に(謎)出張セミナーのお誘いを受けました。 @xin9le ウェルカム!— 那珂にしちゃんは大丈夫です (@hIDDEN_xv) 2012, 8月 30 @xin9le じゃ何か勉強会でもしましょうか!— 那珂にしちゃん…

Developer Camp 北陸 2012 資料

Developer Camp 北陸 2012のLT発表の資料を公開します。最近作っていたMfcLightToolkitを、グダグダなライブコーディング付きでプチ紹介しました。最新のWinRTアプリの勉強のあとにMFCをやるなんて超KY。さらに「MFCコンチキショーあるあるとその簡素化」をM…

TPL入門 (21) - 進捗通知

TPL

昨日Twitterで次のようなつぶやきを見かけました。よくよく考えてみれば、自分でもこれまで一度も並列処理中の進捗通知についてはやったことなかったです。ということで、とりあえずでやってみました。 ProgressBarの進捗がカオスwwwと思ったけども、Para…

非同期メソッド入門 (8) - コンパイラ要件

前回は非同期メソッドの内部実装/展開のされ方を追いかけてみました。(当然ですが)コンパイラは一定の規約に沿ってこのような変換を行います。前回の内容を思い出しながら、非同期メソッドにするためのコンパイラ要件を見て行きましょう。 Awaitableになるた…

非同期メソッド入門 (7) - 内部実装を覗く

非同期メソッドはまるで魔法のようです。非同期処理が同期処理とほとんど同じ書き方ができるなんて、もはや革命です。「今まで非同期処理のコーディングに充ててきた時間をすべて返してほしい」とさえ言いたくなるくらいです。けれどそんな素敵な非同期メソ…

非同期メソッド入門 (6) - 例外処理

ここまで、非同期メソッドの基本的な使い方について見てきました。概要の最後として、例外処理の書き方を見ておきましょう。 通常と同じ記述の例外処理 実は下に示すように、例外処理についても同期コードとほぼほぼ同じ書き方で対応することができます。こ…

非同期メソッド入門 (5) - 戻り値

これまであまり意識して来ませんでしたが、非同期メソッドにももちろん戻り値は必要です。戻り値には以下のいずれかを指定します。 void型 通常のメソッド同様、非同期メソッドでもreturn文を書かない場合には戻り値にvoidを指定できます。戻り値にvoidを指…

非同期メソッド入門 (4) - UIスレッドとの同期

非同期メソッド入門 (2) - async修飾子とawait演算子でも簡単に書きましたが、await以降の処理はコンパイラによって継続渡しという形に変換されます。そのときのサンプルを再掲します。 private async void Button_Click(object sender, RoutedEventArgs e) …

非同期メソッド入門 (3) - 任意の記述場所

async修飾子やawait演算子は、前回紹介したサンプルのような利用箇所に留まりません。適用可能箇所は以下の通りです。 キーワード 適用できる箇所 適用できない箇所 async修飾子 通常のメソッドラムダ式匿名メソッド コンストラクタデストラクタ await演算子…

非同期メソッド入門 (2) - async修飾子とawait演算子

非同期メソッドを実装する上で必要なキーワードはasync修飾子とawait演算子のふたつです。まずはこれらを押さえておきましょう。 ※今回の内容はTPL入門(20) - 非同期メソッドの繰り返しです。ごめんなさい... async修飾子 async修飾子はメソッド内でawait演…

非同期メソッド入門 (1) - 非同期処理の歴史

非同期メソッドを学ぶにあたり、簡単に.NET Frameworkがこれまで提供してきた非同期処理について復習しておきましょう。図示すると大体以下のような感じだと思います。 以下、これらについてコードを交えながら簡単に見ていきます。 UIスレッド上で処理する…

非同期メソッド入門

.NET Framework 4.5 / C# 5.0 から提供された非同期メソッドについての連載インデックス

Community Open Day 2012 資料

Community Open Day 2012の北陸会場で発表したときの資料を公開します。以前から個人的に気になっていた非同期メソッド (async/await) の内部実装について追いかけてみた、というプログラマー的自己満足系の内容になっていますw 当日はMicrosoftのEvangelist…

Rx入門

Rx

非同期/イベント/時間に関する処理を LINQ の形式で簡潔かつ宣言的に記述することができるライブラリ、Reactive Extensions についての連載インデックス

TPL入門

TPL

.NET Framework 4.0で搭載されたタスク並列ライブラリについての連載インデックス

WCAF vol.8 資料

WCAF vol.8でのセッション資料を公開します。Windows Phoneをガチ宣伝するために、デザイナーさんが多い勉強会で「プログラマーもちょっとはカッコ良いのできるんだぜ!」とアピールするために、スライドをガッツリMetro調にしてみました。アニメーションま…

Rx入門 (27) - 入力文字のサジェスト

Rx

昨今の検索ボックスは優秀で、当たり前のようにサジェスト機能が付いてますね。やはりサジェスト機能があると便利です。ということで、今回は文字入力におけるサジェストをやってみます。とはいえ、オートコンプリートを完璧に実装するのは結構手間なので今…

Hokuriku.NET C# -Rx入門- 資料

Hokuriku.NET C# Rx入門の資料を公開します。Rx入門の内容をベースに、C#/LINQを利用したコーディングができる方向けにRx全体をイチから紹介しました。参加された方で復習したい方、実践部分に触れたい方はぜひぜひ参考にしてください。また、間違ってるとこ…

Hokuriku.NET vol.9 資料

Hokuriku.NET vol.9のLTで発表したときの資料を公開します。「Rxって聞いたことあるけどどんなものか知らない」とか、「Rxって何?」と思っている人に興味を持って頂けたらいいなと思い、サンプルアプリ中心の内容にしました。興味を持たれた方は、ぜひRx入…

Rx入門 (26) - .NETイベントへの変換

Rx

以前、Rx入門 (11) - イベントのシーケンス化で.NETネイティブなイベントをIObservable<T>に変換する方法について触れました。「.NETイベントをIObservable<T>に変換できるなら、その逆もできていいんじゃないか?」と思った方、正解です!今回はIObservable<T>を.NET</t></t></t>…

Rx入門 (25) - デッドロックに注意

Rx

IObservable<T>は時間軸を基本としたデータを扱うことができます。これまでも述べてきたように、その枠内で非同期処理を扱うことができます。そして、非同期処理で忘れてはならないのがデッドロックです。Rxにおいてもデッドロックが発生するケースがもちろんあ</t>…