我正在练习WCF异步调用,但无法使其异步运行。
代码非常简单。
当我点击btnGetEvals时,应该立即看到“等待…”,而服务执行并返回evals。相反,两者都需要5秒钟,并且带有“等待…”的evals同时出现。
我发现this,其中建议在完成回调中关闭客户端,因此目前我只是将其注释掉(因为我不知道如何在完成回调中关闭它。在这方面的任何帮助也将不胜感激)。好吧,那没有帮助。是的,我的服务引用已经设置为允许异步操作。
我有点茫然无措。有什么建议吗?
代码非常简单。
protected void btnGetEvals_Click(object sender, EventArgs e)
{
EvalServiceClient client = new EvalServiceClient("BasicHttpBinding_IEvalService");
client.GetEvalsCompleted += client_GetEvalsCompleted;
client.GetEvalsAsync();
Label1.Text = "Waiting...";
//client.Close();
}
void client_GetEvalsCompleted(object sender, GetEvalsCompletedEventArgs e)
{
GridView1.DataSource = e.Result;
GridView1.DataBind();
}
这里是服务
public class EvalService : IEvalService
{
List<Eval> evals = new List<Eval>();
public void SubmitEval(Eval eval)
{
evals.Add(eval);
}
public List<Eval> GetEvals()
{
Thread.Sleep(5000);
return evals;
}
}
当我点击btnGetEvals时,应该立即看到“等待…”,而服务执行并返回evals。相反,两者都需要5秒钟,并且带有“等待…”的evals同时出现。
我发现this,其中建议在完成回调中关闭客户端,因此目前我只是将其注释掉(因为我不知道如何在完成回调中关闭它。在这方面的任何帮助也将不胜感激)。好吧,那没有帮助。是的,我的服务引用已经设置为允许异步操作。
我有点茫然无措。有什么建议吗?