Sejak asp2.0 menyediakan dukungan untuk halaman asynchronous, kinerja panggilan asynchronous ke WebService telah benar-benar ditingkatkan.
Untuk menggunakan halaman asinkron, Anda harus menyetel Async="true" terlebih dahulu. Halaman asinkron diimplementasikan dengan menambahkan metode asinkron Mulai dan akhir antara peristiwa Prerender dan PrerenderComplete.
Ada dua cara untuk mengimplementasikan halaman asinkron WS:
1. Gunakan metode tunggu untuk mengimplementasikan kelas umum asinkron dan merangkum WS
/**//// <ringkasan>
/// Gunakan metode tunggu untuk mengimplementasikan asinkron
/// </ringkasan>
/// <param nama="nama"></param>
/// <pengembalian></pengembalian>
akun Akun pribadi;
nama pengguna string pribadi;
Akun Akun Publik
{
dapatkan { akun pengembalian; }
setel { akun = nilai }
}
string publik Nama Pengguna
{
dapatkan { kembalikan nama pengguna; }
setel { nama pengguna = nilai }
}
IAsyncResult publik BeginAsyncGetAccount (pengirim objek, EventArgs e, AsyncCallback cb, status objek)
{
return vb.BeginGetAccountbyName(nama pengguna,cb,negara bagian);
}
kekosongan publik EndAsyncGetAccount(IAsyncResult ar)
{
akun = vb.EndGetAccountbyName(ar);
}
/**//// <ringkasan>
/// Gunakan asinkron berbasis peristiwa
/// </ringkasan>
/// <param nama="nama pengguna"></param>
public void GetAccountCompleted(Sumber objek, VB.GetAccountbyNameCompletedEventArgs e)
{
akun = e.Hasil;
}
public void AsGetAccount (string nama pengguna)
{
vb.GetAccountbyNameCompleted += baru GetAccountbyNameCompletedEventHandler(GetAccountCompleted);
vb.GetAccountbyNameAsync(nama pengguna)
}Metode panggilan
dilindungi kekosongan Page_Load (pengirim objek, EventArgs e)
{
ini.PreRenderComplete += EventHandler baru(Page_PreRenderComplete);
b.Nama Pengguna = "dinghao";
AddOnPreRenderCompleteAsync(b.BeginAsyncGetAccount, b.EndAsyncGetAccount);
}
dilindungi kekosongan Page_PreRenderComplete (pengirim objek, EventArgs e)
{
//Akhir dari panggilan asinkron
VB.Rekening a = b.Rekening;
AccountIf ai = AccountIf baru(a);
ais[0] = ai;
GridView1.DataSource = ais;
GridView1.DataBind();
}Karena kedua delegasi AddOnPreRenderCompleteAsync keduanya bertipe Void, atribut dengan nilai kembalian seperti Akun harus ditambahkan ke kelas umum untuk digunakan oleh metode pemanggilan utama delegasi. Atribut parameter harus ditambahkan seperti: Nama pengguna
2. Asinkron yang digerakkan oleh peristiwa (baru di 2.0)
Metode panggilan:
dilindungi kekosongan Page_Load (pengirim objek, EventArgs e)
{
ini.PreRenderComplete += EventHandler baru(Page_PreRenderComplete);
b.AsGetAccount("dinghao");
}
dilindungi kekosongan Page_PreRenderComplete (pengirim objek, EventArgs e)
{
//Akhir dari panggilan asinkron
VB.Rekening a = b.Rekening;
AccountIf ai = AccountIf baru(a);
ais[0] = ai;
GridView1.DataSource = ais;
GridView1.DataBind();
}Metode pemanggilan ini menggunakan peristiwa *Selesai, yang dipicu ketika *Async selesai. Metode pemanggilan ini dapat menghilangkan atribut Akun dan Nama Pengguna, dan relatif mudah digunakan
http://bluewater.cnblogs.com/archive/2006/ 20/06/430758.html