asp2.0 は非同期ページのサポートを提供するため、WebService への非同期呼び出しのパフォーマンスが大幅に向上しました。
非同期ページを使用するには、まず Async="true" を設定する必要があります。非同期ページは、Prerender イベントと PrerenderComplete イベントの間に Begin メソッドと End 非同期メソッドを追加することで実装されます。Begin メソッドと End メソッドは別のスレッドに属します。
WS 非同期ページを実装するには 2 つの方法があります。
1. waitメソッドを使用して非同期汎用クラスを実装し、WSをカプセル化します。
/**//// <概要>
/// wait メソッドを使用して非同期を実装します
/// </概要>
/// <param name="name"></param>
/// <戻り値></戻り値>
プライベートアカウントアカウント;
プライベート文字列のユーザー名。
パブリックアカウント アカウント
{
{ アカウントを返す }
{アカウント = 値}を設定します。
}
パブリック文字列ユーザー名
{
get { ユーザー名を返す }
セット { ユーザー名 = 値 }
}
public IAsyncResult BeginAsyncGetAccount(オブジェクト送信者、EventArgs e、AsyncCallback cb、オブジェクト状態)
{
return vb.BeginGetAccountbyName(ユーザー名,cb,状態);
}
public void EndAsyncGetAccount(IAsyncResult ar)
{
アカウント = vb.EndGetAccountbyName(ar);
}
/**//// <概要>
/// イベント駆動型の非同期を使用する
/// </概要>
/// <param name="ユーザー名"></param>
public void GetAccountCompleted(オブジェクト ソース、VB.GetAccountbyNameCompletedEventArgs e)
{
アカウント = e.結果;
}
public void AsGetAccount(string ユーザー名)
{
vb.GetAccountbyNameCompleted += new GetAccountbyNameCompletedEventHandler(GetAccountCompleted);
vb.GetAccountbyNameAsync(ユーザー名)
}メソッドの呼び出し
protected void Page_Load(オブジェクト送信者, EventArgs e)
{
this.PreRenderComplete += 新しい EventHandler(Page_PreRenderComplete);
b.ユーザー名 = "dinghao";
AddOnPreRenderCompleteAsync(b.BeginAsyncGetAccount, b.EndAsyncGetAccount);
}
protected void Page_PreRenderComplete(オブジェクト送信者、EventArgs e)
{
//非同期呼び出しの終了
VB.アカウント a = b.アカウント;
AccountIf ai = 新しい AccountIf(a);
ais[0] = ai;
GridView1.DataSource = ais;
GridView1.DataBind();
AddOnPreRenderCompleteAsync の 2 つのデリゲートは両方とも Void 型であるため、メインの呼び出しメソッドで使用するために、Account などの戻り値を持つ属性を一般クラスに追加する必要があります。また、非同期メソッドのパラメーター情報はありません。デリゲートには次のようなパラメータ属性を追加する必要があります。
2. イベント駆動型の非同期 (2.0 の新機能)
呼び出し方法:
protected void Page_Load(オブジェクト送信者, EventArgs e)
{
this.PreRenderComplete += 新しい EventHandler(Page_PreRenderComplete);
b.AsGetAccount("ディンハオ");
}
protected void Page_PreRenderComplete(オブジェクト送信者、EventArgs e)
{
//非同期呼び出しの終了
VB.アカウント a = b.アカウント;
AccountIf ai = 新しい AccountIf(a);
ais[0] = ai;
GridView1.DataSource = ais;
GridView1.DataBind();
この呼び出しメソッドは、*Async が完了するとトリガーされる *Completed イベントを使用します。この呼び出しメソッドは、Account 属性と Username 属性を省略でき、