かなり他にネタが貯まってるんだけど、とりあえず今作ってるのの整理としてpostしておく。
XMLHttpRequest使えばいいんじゃないか、とも思ったがそんなに面倒でも無いので前のを非同期化してみた。
Download => Org.Shokai.Web.AsyncWebRequest.cs
VisualStudio2005Pro / C#2.0環境で動作確認。
Thread使ってるのでHTTPリクエスト中もGUIが固まらない。
■使い方(簡単に)
AsyncWebRequestにResponseというクラスを引数に持つcallback関数を登録して、
get(); すればデータ全部受信した時にcallbackが呼ばれる。Response.contentの中にHTML全部入ってる。
■使い方
usingOrg.Shokai.Web;
AsyncWebRequestasyncReq=newAsyncWebRequest();
asyncReq.encoding=Encoding.UTF8;
asyncReq.sleepTime=1;
sleepTimeとエンコードは自動的に初期化されるので、省略して構わない。
コールバック関数をどこかに書いておく。
publicvoidonAsyncResponse(Responseres)
{
Console.WriteLine(res.content);//受信したデータ
}
さあ、さきほどのコールバック関数を登録して、いざ呼び出したまえ!
asyncReq.onResponse+=onAsyncResponse;
asyncReq.get(newUri(“http://shokai.org”));
レスポンスはResponse.bodyの中に入ってるので、コールバック関数の中で適当に料理してね。
ちなみに君はcallbackを以下のように書いてもいいし、書かなくてもいい。
ResponseDelegateresDel=delegate(Responseres)
{
Console.WriteLine(res.content);
};
asyncReq.onResponse+=resDel;
asyncReq.onResponse+=(ResponseDelegate)delegate(Responseres)
{
Console.WriteLine(res.content);
};
俺はコレ↑かな