我已经实现了一些wcf代码,它从wcf调用中返回数据,它可以工作,但行为是同步的。
IAsyncResult BeginGetAsyncData(object src, EventArgs args, AsyncCallback cb, object state)
{
_client = new ServiceReference1.Service1Client();
return _client.BeginGetPermissionsByStaffID("xxx", cb, state);
}
void EndGetAsyncData(IAsyncResult ar)
{
//ServiceReference1.Service1Client client = new ServiceReference1.Service1Client();
ServiceReference1.tblUser_Permission[] permissions = _client.EndGetPermissionsByStaffID(ar);
System.Threading.Thread.Sleep(2000);
dgResults.DataSource = permissions;
dgResults.DataBind();
}
protected void Button1_Click(object sender, EventArgs e)
{
PageAsyncTask task = new PageAsyncTask(BeginGetAsyncData, EndGetAsyncData, null, null);
Page.RegisterAsyncTask(task);
txtOut.Text = "Waiting...";
}
我看到的是两秒钟的停顿,然后“等待”信息出现。我没有显式地生成一个新线程,但据我所知,当我将WCF服务定义为异步时,这是不必要的。
任何帮助都将不胜感激!