<%@ Page Async="true" Language="C#" %> <asp:Content ID="Content" ContentPlaceHolderID="Main" Runat="server"> <asp:Label ID="Output" Runat="server"></asp:Label> </asp:Content> public partial class AsyncPageTask : System.Web.UI.Page { private WebRequest m_Request; protected void Page_Load(object sender, EventArgs e) { PageAsyncTask task = new PageAsyncTask( new BeginEventHandler(BeginAsyncOperation), new EndEventHandler(EndAsyncOperation), new EndEventHandler(TimeoutAsyncOperation), null ); RegisterAsyncTask(task); } IAsyncResult BeginAsyncOperation(object sender, EventArgs e, AsyncCallback cb, object state) { m_Request= WebRequest.Create("http://www.dofor.cn"); return m_Request.BeginGetResponse(cb, state); } void EndAsyncOperation(IAsyncResult ar) { string text; using (WebResponse response = m_Request.EndGetResponse(ar)) { using (StreamReader reader = new StreamReader(response.GetResponseStream())) { text = reader.ReadToEnd(); } } Regex regex = new Regex("href\\s*=\\s*\"([^\"]*)\"", RegexOptions.IgnoreCase); MatchCollection matches = regex.Matches(text); StringBuilder builder = new StringBuilder(1024); foreach (Match match in matches) { builder.Append(match.Groups); builder.Append("<br/>"); } Output.Text = builder.ToString(); } void TimeoutAsyncOperation(IAsyncResult ar) { Output.Text = "当前数据不可用"; } } |