<%@ Page Language="C#" AutoEventWireup="true" CodeFile="AsyncDemo.aspx.cs" Inherits="Scene_AsyncDemo" Async="true" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>无标题页</title>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:GridView ID="GridView1" runat="server"></asp:GridView>
</div>
</form>
</body>
</html>
=============================================
private StaticData staticData;
private ProvinceDataSet provinceDataSet;
private IAsyncResult ar;
protected void Page_Load(object sender, EventArgs e)
{
staticData = new StaticData();
this.PreRenderComplete += new EventHandler(Page_PreRenderComplete);
//.net1.1
this.AddOnPreRenderCompleteAsync(this.BeginProvince, this.EndProvince);
//.net2.0
//this.AsyncProvince();
}
protected void Page_PreRenderComplete(object sender, EventArgs e)
{
this.GridView1.DataSource = this.provinceDataSet;
this.GridView1.DataBind();
}
/// <summary>
/// .net1.1中异步
/// </summary>
public IAsyncResult BeginProvince(object sender, EventArgs e, AsyncCallback cb, object asyncState)
{
this.ar = staticData.BeginGetProvince(cb, asyncState);
return staticData.BeginGetProvince(cb, asyncState);
}
public void EndProvince(IAsyncResult ar)
{
provinceDataSet = staticData.EndGetProvince(ar);
}
private void CancelProvince()
{
WebClientAsyncResult webClientAsyncResult = (WebClientAsyncResult)this.ar;
webClientAsyncResult.Abort();
ar = null;
}
/// <summary>
/// .net2.0中事件驱动的异步
/// </summary>
public void AsyncProvince()
{
staticData.GetProvinceCompleted += new GetProvinceCompletedEventHandler(GetProvinceCompleted);
staticData.GetProvinceAsync();
}
public void GetProvinceCompleted(Object source, GetProvinceCompletedEventArgs e)
{
provinceDataSet = e.Result;
}
public void AsyncCancel()
{
//staticData.Abort();
staticData.CancelAsync(null);
}