关于异步操作的问题
adow 2006-05-18 11:21:14 我第一次使用异步操作,我现在做一个下载网页的东西,我另外写了一个类来访问url地址,取得内容
public class RequestState
{
// This class stores the state of the request.
const int BUFFER_SIZE = 1024000;
public StringBuilder requestData;
public byte[] bufferRead;
public WebRequest request;
public WebResponse response;
public Stream responseStream;
public RequestState()
{
bufferRead = new byte[BUFFER_SIZE];
requestData = new StringBuilder("");
request = null;
responseStream = null;
}
}
public class Spider
{
public static ManualResetEvent allDone = new ManualResetEvent(false);
public void AsyncLoadPage(string url)
{
WebRequest request = WebRequest.Create(url);
RequestState state = new RequestState();
state.request = request;
IAsyncResult asyncresult = (IAsyncResult)request.BeginGetResponse(
new AsyncCallback(RespCallback), state);
allDone.WaitOne();
state.response.Close();
}
private static void RespCallback(IAsyncResult asynchronousResult)
{
RequestState state = asynchronousResult.AsyncState;
WebRequest request = state.request;
state.response = request.EndGetResponse(asynchronousResult);
Stream stream = state.response.GetResponseStream();
state.responseStream = stream;
StreamReader sr = new StreamReader(stream);
string htmlcode = sr.ReadToEnd();
allDone.Set();
}
}
然后在窗体调用:
private void butstart_Click(object sender, EventArgs e)
{
Spider spider = new Spider();
spider.AsyncLoadPage("http://www.imdb.com/title/tt0128853/");
}
问题在于,我是通过异步操作得到了数据了,可是我要如何才能在窗体的textbox上显示我抓到的内容呢。
请指教。