« 2012年10月 | トップページ | 2012年12月 »

2012年11月の1件の記事

2012年11月27日 (火)

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)

| | コメント (1) | トラックバック (1)

« 2012年10月 | トップページ | 2012年12月 »