asp2.0은 비동기 페이지에 대한 지원을 제공하므로 WebService에 대한 비동기 호출 성능이 크게 향상되었습니다.
비동기 페이지를 사용하려면 먼저 Async="true"를 설정해야 합니다. Prerender 및 PrerenderComplete 이벤트 사이에 Begin 및 end 비동기 메서드를 추가하여 비동기 페이지를 구현합니다. Begin 및 End 메서드는 서로 다른 스레드에 속합니다.
WS 비동기 페이지를 구현하는 방법에는 두 가지가 있습니다.
1. 비동기 일반 클래스를 구현하고 WS를 캡슐화하기 위해 wait 메소드를 사용하십시오.
/**//// <요약>
/// 비동기 구현을 위해 wait 메소드를 사용하세요.
/// </summary>
/// <param name="이름"></param>
/// <반환></반환>
개인 계정 계정;
개인 문자열 사용자 이름;
공개 계정 계정
{
{ 반품 계정 } 받기
{ 계정 = 값 } 설정
}
공개 문자열 사용자 이름
{
{사용자 이름 반환}을 얻습니다.
{ 사용자 이름 = 값 } 설정
}
공개 IAsyncResult BeginAsyncGetAccount(개체 보낸 사람, EventArgs e, AsyncCallback cb, 개체 상태)
{
return vb.BeginGetAccountbyName(사용자 이름,cb,상태);
}
공개 무효 EndAsyncGetAccount(IAsyncResult ar)
{
계정 = vb.EndGetAccountbyName(ar);
}
/**//// <요약>
/// 이벤트 기반 비동기 사용
/// </summary>
/// <param name="사용자 이름"></param>
공개 무효 GetAccountCompleted(개체 소스, VB.GetAccountbyNameCompletedEventArgs e)
{
계정 = e.결과;
}
공개 무효 AsGetAccount(문자열 사용자 이름)
{
vb.GetAccountbyNameCompleted += new GetAccountbyNameCompletedEventHandler(GetAccountCompleted);
vb.GetAccountbyNameAsync(사용자 이름)
}통화 방법
protected void Page_Load(개체 전송자, EventArgs e)
{
this.PreRenderComplete += new 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의 두 대리자는 모두 Void 유형이므로 Account와 같은 반환 값이 있는 속성은 기본 호출 메서드에서 사용할 일반 클래스에 추가되어야 합니다. 또한 비동기 메서드에 대한 매개 변수 정보는 없습니다. 다음과 같은 매개변수 속성을 추가해야 합니다.
2. 이벤트 기반 비동기식(2.0의 새로운 기능)
호출 방법:
protected void Page_Load(개체 전송자, EventArgs e)
{
this.PreRenderComplete += new 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 이벤트를 사용합니다. 이 호출 방법은 계정 및 사용자 이름 속성을 생략할 수 있으며