Como o asp2.0 fornece suporte para páginas assíncronas, o desempenho das chamadas assíncronas ao WebService foi realmente melhorado.
Para usar uma página assíncrona, você deve primeiro definir Async="true". A página assíncrona é implementada adicionando os métodos assíncronos Begin e End entre os eventos Prerender e PrerenderComplete. Os métodos Begin e End pertencem a threads diferentes.
Existem duas maneiras de implementar páginas assíncronas de WS:
1. Use o método wait para implementar uma classe geral assíncrona e encapsular WS
/**//// <resumo>
/// Use o método wait para implementar assíncrono
/// </sumário>
/// <param name="nome"></param>
/// <retorna></retorna>
conta de conta privada;
nome de usuário de string privada;
Conta pública
{
obter {retornar conta};
definir {conta = valor};
}
string pública Nome de usuário
{
obter {retornar nome de usuário};
definir {nome de usuário = valor};
}
public IAsyncResult BeginAsyncGetAccount (remetente do objeto, EventArgs e, AsyncCallback cb, estado do objeto)
{
retornar vb.BeginGetAccountbyName(nomedeusuário,cb,estado);
}
public void EndAsyncGetAccount (IAsyncResult ar)
{
conta = vb.EndGetAccountbyName(ar);
}
/**//// <resumo>
/// Use assíncrono orientado a eventos
/// </sumário>
/// <param name="nomedeusuário"></param>
public void GetAccountCompleted (fonte do objeto, VB.GetAccountbyNameCompletedEventArgs e)
{
conta = e.Resultado;
}
public void AsGetAccount(string nome de usuário)
{
vb.GetAccountbyNameCompleted += new GetAccountbyNameCompletedEventHandler(GetAccountCompleted);
vb.GetAccountbyNameAsync(nome de usuário)
}Chamar método
protegido void Page_Load (remetente do objeto, EventArgs e)
{
this.PreRenderComplete += new EventHandler(Page_PreRenderComplete);
b.Nome de usuário = "dinghao";
AddOnPreRenderCompleteAsync(b.BeginAsyncGetAccount, b.EndAsyncGetAccount);
}
protegido void Page_PreRenderComplete(remetente do objeto, EventArgs e)
{
//Fim da chamada assíncrona
VB.Conta a = b.Conta;
ContaIf ai = new ContaIf(a);
ais[0] = ai;
GridView1.DataSource = ais;
GridView1.DataBind();
}Como os dois delegados de AddOnPreRenderCompleteAsync são do tipo Void, atributos com valores de retorno como Account devem ser adicionados à classe geral para uso pelo método de chamada principal. delegado. Atributos de parâmetro devem ser adicionados como: Nome de usuário.
2. Assíncrono orientado a eventos (novo na versão 2.0)
Método de chamada:
protegido void Page_Load (remetente do objeto, EventArgs e)
{
this.PreRenderComplete += new EventHandler(Page_PreRenderComplete);
b.AsGetAccount("dinghao");
}
protegido void Page_PreRenderComplete (remetente do objeto, EventArgs e)
{
//Fim da chamada assíncrona
VB.Conta a = b.Conta;
ContaIf ai = new ContaIf(a);
ais[0] = ai;
GridView1.DataSource = ais;
GridView1.DataBind();
}Este método de chamada usa o evento *Completed, que é acionado quando *Async é concluído. Este método de chamada pode omitir os atributos Conta e Nome de usuário e é relativamente simples de usar
http://bluewater.cnblogs.com/archive/2006/. 20/06/430758.html