Puisque asp2.0 prend en charge les pages asynchrones, les performances des appels asynchrones à WebService ont été véritablement améliorées.
Pour utiliser une page asynchrone, vous devez d'abord définir Async="true". La page asynchrone est implémentée en ajoutant les méthodes asynchrones Begin et end entre les événements Prerender et PrerenderComplete. Les méthodes Begin et End appartiennent à des threads différents.
Il existe deux manières d'implémenter des pages asynchrones WS :
1. Utilisez la méthode wait pour implémenter une classe générale asynchrone et encapsuler WS
/**//// <résumé>
/// Utiliser la méthode wait pour implémenter l'asynchrone
/// </summary>
/// <param name="nom"></param>
/// <retours></retours>
compte de compte privé ;
nom d'utilisateur de chaîne privée ;
Compte public Compte
{
obtenir { rendre le compte }
définir { compte = valeur }
}
chaîne publique Nom d'utilisateur
{
obtenir { retourner le nom d'utilisateur }
définir { nom d'utilisateur = valeur }
}
public IAsyncResult BeginAsyncGetAccount (expéditeur de l'objet, EventArgs e, AsyncCallback cb, état de l'objet)
{
return vb.BeginGetAccountbyName (nom d'utilisateur, cb, état);
}
public void EndAsyncGetAccount (IAsyncResult ar)
{
compte = vb.EndGetAccountbyName(ar);
}
/**//// <résumé>
/// Utiliser l'asynchrone piloté par les événements
/// </summary>
/// <param name="nom d'utilisateur"></param>
public void GetAccountCompleted (source de l'objet, VB.GetAccountbyNameCompletedEventArgs e)
{
compte = e.Résultat ;
}
public void AsGetAccount (nom d'utilisateur chaîne)
{
vb.GetAccountbyNameCompleted += new GetAccountbyNameCompletedEventHandler(GetAccountCompleted);
vb.GetAccountbyNameAsync (nom d'utilisateur)
}Méthode d'appel
protected void Page_Load (expéditeur de l'objet, EventArgs e)
{
this.PreRenderComplete += new EventHandler(Page_PreRenderComplete);
b.Nom d'utilisateur = "dinghao" ;
AddOnPreRenderCompleteAsync(b.BeginAsyncGetAccount, b.EndAsyncGetAccount);
}
protected void Page_PreRenderComplete (expéditeur de l'objet, EventArgs e)
{
//Fin de l'appel asynchrone
VB.Compte a = b.Compte ;
AccountIf ai = nouveau AccountIf(a);
ais[0] = ai;
GridView1.DataSource = ais;
GridView1.DataBind();
}Étant donné que les deux délégués de AddOnPreRenderCompleteAsync sont tous deux de type Void, les attributs avec des valeurs de retour telles que Account doivent être ajoutés à la classe générale pour être utilisés par la méthode appelante principale. De plus, il n'y a aucune information sur les paramètres pour les méthodes asynchrones dans le. délégué. Les attributs de paramètre doivent être ajoutés tels que : Nom d'utilisateur.
2. Asynchrone piloté par les événements (nouveau dans la version 2.0)
Méthode d'appel :
protected void Page_Load (expéditeur de l'objet, EventArgs e)
{
this.PreRenderComplete += new EventHandler(Page_PreRenderComplete);
b.AsGetAccount("dinghao");
}
protected void Page_PreRenderComplete (expéditeur de l'objet, EventArgs e)
{
//Fin de l'appel asynchrone
VB.Compte a = b.Compte ;
AccountIf ai = nouveau AccountIf(a);
ais[0] = ai;
GridView1.DataSource = ais;
GridView1.DataBind();
}Cette méthode d'appel utilise l'événement *Completed, qui est déclenché lorsque *Async est terminé. Cette méthode d'appel peut omettre les attributs Account et Username et est relativement simple à utiliser
http://bluewater.cnblogs.com/archive/2006/. 20/06/430758.html