Win8/WP8 の PCL で HttpWebRequest を使う
Win8/WP8 用の PCL で HttpWebRequest を使おうとすると、 GetResponseAsync() が無いので await 出来ないのですな。 かといって、 いまさら非同期実行後のコールバックを別のメソッドに書くのは、 すでに生理的に受け付けないw
そこで、 AutoResetEvent を使って、 BeginGetResponse() と EndGetResponse() を一つのメソッドに押し込んでやります。
汎用的に使いたいなら、拡張メソッドにしてやってもよし。
で、 これを使って Web からダウンロードするコードは、 こんな具合に。
ほら、素直になった♪
そして考えることは誰しも同じで、 AutoResetEvent を使ったコードをいちいち書かなくても、Bcl Async ("Async for .NET Framework 4, Silverlight 4 and 5, and Windows Phone 7.5"; Microsoft.Threading.Tasks.Extensions) を使えば OK ! Win8/WP8 用の PCL 内でも動きました。
今はβ版なのでストアに上げるコードに使うのはマズそう。 早く正式版にな~れ!
[2013/4/15 追記]
VS2012 Update2 を入れると、 PCL では BCL.Async がビルドできなくなります。 ⇒ VS2012 Update2 の落とし穴 ~ BCL.Async と PCL
[2013/4/18 追記]
BCL.Async の stable リリースが出ました。 上記の問題が解消されています。
なお、 Bcl Async を入れて HttpWebRequest を使う方法は、 「@daisuke_nomuraの日記」をどうぞ。 ⇒ 「Windows Phone 8でHttpWebRequest/Responseを使う」(2012-11-26)
| 固定リンク
「プログラミング」カテゴリの記事
- 【.NET / Win8.1 ストアアプリ】 HttpClient で TLS 1.1 / 1.2 に対応するには(2018.06.17)
- 【VS2017 15.7pv2】 XAML のランタイム ツールに 「ヒートマップ」 が増えた(2018.03.28)
- 【.NET Core】 プロジェクトを作ると 「project.assets.json が見つかりません」 エラー(2018.02.10)
- 【#UWP】 ビットマップの表示色を変える (Win2D.uwp 経由で Direct2D を使う)(2017.08.23)
- 【#UWP】 CompactOverlay モード: Picture in Picture というか、「最前面に表示」するウィンドウを作る(2017.08.16)
「* プログラミング ( Metro スタイル )」カテゴリの記事
- 【.NET / Win8.1 ストアアプリ】 HttpClient で TLS 1.1 / 1.2 に対応するには(2018.06.17)
- 【VS2017 15.7pv2】 XAML のランタイム ツールに 「ヒートマップ」 が増えた(2018.03.28)
- 【#UWP】 ビットマップの表示色を変える (Win2D.uwp 経由で Direct2D を使う)(2017.08.23)
- 【#UWP】 CompactOverlay モード: Picture in Picture というか、「最前面に表示」するウィンドウを作る(2017.08.16)
- 【#UWP】 15063用の Acrylic Effect を、ちゃんと実装してみる(2017.08.05)
この記事へのコメントは終了しました。
コメント
This is just what I was looking for. Thanks!
投稿: | 2012年12月11日 (火) 12時35分