Dado que asp2.0 proporciona soporte para páginas asincrónicas, el rendimiento de las llamadas asincrónicas a WebService realmente ha mejorado.
Para utilizar una página asincrónica, primero debe configurar Async="true". La página asincrónica se implementa agregando los métodos asincrónicos Begin y End entre los eventos Prerender y PrerenderComplete. Los métodos Begin y End pertenecen a diferentes subprocesos.
Hay dos formas de implementar páginas asincrónicas de WS:
1. Utilice el método de espera para implementar una clase general asincrónica y encapsular WS
/**//// <resumen>
/// Usa el método de espera para implementar asíncrono
/// </summary>
/// <param nombre="nombre"></param>
/// <devoluciones></devoluciones>
cuenta de cuenta privada;
nombre de usuario de cadena privada;
cuenta publica cuenta
{
obtener {devolver cuenta}
establecer { cuenta = valor }
}
nombre de usuario de cadena pública
{
obtener {devolver nombre de usuario}
establecer {nombre de usuario = valor}
}
público IAsyncResult BeginAsyncGetAccount (remitente del objeto, EventArgs e, AsyncCallback cb, estado del objeto)
{
devolver vb.BeginGetAccountbyName(nombre de usuario,cb,estado);
}
público vacío EndAsyncGetAccount (IAsyncResult ar)
{
cuenta = vb.EndGetAccountbyName(ar);
}
/**//// <resumen>
/// Utilice asíncrono controlado por eventos
/// </summary>
/// <param nombre="nombre de usuario"></param>
public void GetAccountCompleted (fuente del objeto, VB.GetAccountbyNameCompletedEventArgs e)
{
cuenta = e.Resultado;
}
AsGetAccount público vacío (nombre de usuario de cadena)
{
vb.GetAccountbyNameCompleted += nuevo GetAccountbyNameCompletedEventHandler(GetAccountCompleted);
vb.GetAccountbyNameAsync(nombre de usuario)
}Método de llamada
Page_Load vacío protegido (remitente del objeto, EventArgs e)
{
this.PreRenderComplete += nuevo EventHandler(Page_PreRenderComplete);
b.Nombre de usuario = "dinghao";
AddOnPreRenderCompleteAsync(b.BeginAsyncGetAccount, b.EndAsyncGetAccount);
}
Page_PreRenderComplete vacío protegido (remitente del objeto, EventArgs e)
{
//Fin de la llamada asincrónica
VB.Cuenta a = b.Cuenta;
CuentaSi ai = nueva CuentaSi(a);
ais[0] = ai;
GridView1.DataSource = ais;
GridView1.DataBind();
} Dado que los dos delegados de AddOnPreRenderCompleteAsync son de tipo Void, los atributos con valores de retorno como Cuenta deben agregarse a la clase general para que los use el método de llamada principal. Además, no hay información de parámetros para los métodos asincrónicos en el. Se deben agregar atributos de parámetros como: Nombre de usuario.
2. Asíncrono controlado por eventos (nuevo en 2.0)
Método de llamada:
Page_Load vacío protegido (remitente del objeto, EventArgs e)
{
this.PreRenderComplete += nuevo EventHandler(Page_PreRenderComplete);
b.AsGetAccount("dinghao");
}
Page_PreRenderComplete vacío protegido (remitente del objeto, EventArgs e)
{
//Fin de la llamada asincrónica
VB.Cuenta a = b.Cuenta;
CuentaSi ai = nueva CuentaSi(a);
ais[0] = ai;
GridView1.DataSource = ais;
GridView1.DataBind();
}Este método de llamada utiliza el evento *Completed, que se activa cuando se completa *Async. Este método de llamada puede omitir los atributos Cuenta y Nombre de usuario, y es relativamente sencillo de usar
http://bluewater.cnblogs.com/archive/2006/. 20/06/430758.html