Da asp2.0 asynchrone Seiten unterstützt, wurde die Leistung asynchroner Aufrufe von WebService erheblich verbessert.
Um eine asynchrone Seite zu verwenden, müssen Sie zunächst Async="true" festlegen. Die asynchrone Seite wird durch Hinzufügen der asynchronen Methoden Begin und End zwischen den Ereignissen Prerender und PrerenderComplete implementiert. Die Methoden Begin und End gehören zu unterschiedlichen Threads.
Es gibt zwei Möglichkeiten, asynchrone WS-Seiten zu implementieren:
1. Verwenden Sie die Wartemethode, um eine asynchrone allgemeine Klasse zu implementieren und WS zu kapseln
/**//// <Zusammenfassung>
/// Verwenden Sie die Wartemethode, um asynchron zu implementieren
/// </summary>
/// <param name="name"></param>
/// <returns></returns>
privates Kontokonto;
privater String-Benutzername;
öffentliches Kontokonto
{
get { return account }
set {Konto = Wert;
}
öffentliche Zeichenfolge Benutzername
{
get { return username }
set { Benutzername = Wert }
}
public IAsyncResult BeginAsyncGetAccount(object sender, EventArgs e, AsyncCallback cb, object state)
{
return vb.BeginGetAccountbyName(username,cb,state);
}
public void EndAsyncGetAccount(IAsyncResult ar)
{
account = vb.EndGetAccountbyName(ar);
}
/**//// <Zusammenfassung>
/// Ereignisgesteuerte Asynchronität verwenden
/// </summary>
/// <param name="username"></param>
public void GetAccountCompleted(Object source, VB.GetAccountbyNameCompletedEventArgs e)
{
account = e.Result;
}
public void AsGetAccount(string username)
{
vb.GetAccountbyNameCompleted += new GetAccountbyNameCompletedEventHandler(GetAccountCompleted);
vb.GetAccountbyNameAsync(Benutzername)
}Methode aufrufen
protected void Page_Load(object sender, EventArgs e)
{
this.PreRenderComplete += new EventHandler(Page_PreRenderComplete);
b.Benutzername = "dinghao";
AddOnPreRenderCompleteAsync(b.BeginAsyncGetAccount, b.EndAsyncGetAccount);
}
protected void Page_PreRenderComplete(object sender, EventArgs e)
{
//Ende des asynchronen Aufrufs
VB.Konto a = b.Konto;
AccountIf ai = new AccountIf(a);
ais[0] = ai;
GridView1.DataSource = ais;
GridView1.DataBind();
}Da die beiden Delegaten von AddOnPreRenderCompleteAsync beide vom Typ Void sind, sollten Attribute mit Rückgabewerten wie Account zur Verwendung durch die Hauptaufrufmethode hinzugefügt werden. Darüber hinaus gibt es keine Parameterinformationen für asynchrone Methoden in Es sollten Parameterattribute hinzugefügt werden, z. B.: Benutzername
2. Ereignisgesteuerte Asynchronität (neu in 2.0)
Aufrufmethode:
protected void Page_Load(object sender, EventArgs e)
{
this.PreRenderComplete += new EventHandler(Page_PreRenderComplete);
b.AsGetAccount("dinghao");
}
protected void Page_PreRenderComplete(object sender, EventArgs e)
{
//Ende des asynchronen Aufrufs
VB.Konto a = b.Konto;
AccountIf ai = new AccountIf(a);
ais[0] = ai;
GridView1.DataSource = ais;
GridView1.DataBind();
}Diese aufrufende Methode verwendet das *Completed-Ereignis, das ausgelöst wird, wenn *Async abgeschlossen ist. Diese aufrufende Methode kann die Attribute „Konto“ und „Benutzername“ weglassen und ist relativ einfach zu verwenden:
http://bluewater.cnblogs.com/archive/2006/. 20.06.430758.html