请高手讲下ASP.NET中的异步操作
想知道ASP.NET中是如何实现异步操作的。在Page_Load中执行多个函数,每个函数之间的执行方式是异步执行的,互相不受影响。
在网上找个些资料,但是没太明白,代码如下:
private WebRequest request;
protected void Page_Load(object sender, EventArgs e)
{
//注册异步调用的Begin和End方法.
AddOnPreRenderCompleteAsync(
new BeginEventHandler(BeginAsyncOperation),
new EndEventHandler(EndAsyncOperation),
new EndEventHandler(TimeoutAsyncOperation)
);
}
IAsyncResult BeginAsyncOperation(object sender, EventArgs e, AsyncCallback cb, object state)
{
request = WebRequest.Create("http://www.baidu.com");
return request.BeginGetResponse(cb, state);
}
void EndAsyncOperation(IAsyncResult ar)
{
string text;
using (WebResponse response = request.EndGetResponse(ar))
{
using (StreamReader r = new StreamReader(response.GetResponseStream()))
{
text = r.ReadToEnd();
r.Close();
}
}
Regex re = new Regex("href\\s*=\\s*\"([^\"]*)\"", RegexOptions.IgnoreCase);
MatchCollection matches = re.Matches(text);
StringBuilder builder = new StringBuilder(1024);
foreach (Match match in matches)
{
builder.Append(match.Groups[1]);
builder.Append("<br/>");
}
Label1.Text = builder.ToString();
}
void TimeoutAsyncOperation(IAsyncResult result)
{
Label1.Text = "Data temporarily unavailable";
}
从上面的代码中我们看出来有什么异步的操作啊?如果我定义了两个AddOnPreRenderCompleteAsync,分别执行不同的方法,两个之间是不应该受影响的吧?但是我在Page_Load中单步执行还是顺序执行的啊?
请高手指教。