2010年9月23日木曜日

WP7プログラム

WP7の開発環境が正式に発表されたので、ちょっといじってみました。
実機はありませんが、エミュレータの動作が軽快なのでデバック作業には支障がなさそうです
uGReaderの移植が目標です。ソースはもともとc#で書かれているので移植はそんなに問題ないと思ってましたが、結構いろいろありそうです

まず、HttpWebRequest はサポートしているのですが、非同期通信のみとなっています。
元ソースはメイン処理と別に通信用スレッドを作って同期処理をしていたので、ここを書き換える必要があります。とりあえず実験でボタンを押すとデータを受信するコードを書いてみます


ここでハマったのが、Googleからxmlデータをリードする前に認証コードをやり取りする必要があるのですが、認証処理を実行してレスポンスが得られるまで


req.BeginGetRequestStream(new AsyncCallback(GetSidCallback),obj);
done.WaitOne();
みたいにイベント待ちをすると帰ってこなくなります

BeginGetRequestStream をWaitするのは問題ないのですが、そのあとに
BeginGetResponse
を実行すると、この処理のコールバック関数が呼び出されません

どうやらBeginGetResponseの処理は同じスレッドで動いているようで、イベント待ちでスレッドを停止するとだめなようです

認証コード取得 -> xmlフィード取得

の一連の流れをすべて非同期処理に書き換える必要がありそうです


0 件のコメント: