我正在练习WCF异步调用,但我无法让它运行异步。
代码很简单
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时,我应该在服务执行时立即看到“Waiting ...”并返回evals。相反,两者都需要5秒钟,同时出现“等待......”的故事。
我发现this,建议在完成的回调中关闭客户端,所以现在我只是评论它(因为我不知道如何在完成的回调中关闭它。在该部门的任何帮助也将不胜感激。嗯,这没有帮助。是的,我的服务引用已经设置为允许ansync操作。
我在这里有点不知所措。有什么建议吗?
答案 0 :(得分:1)
这是实现WFC异步调用的步骤概述
实现WCF asyn调用的所有细节都在这里
<强> http://www.codeproject.com/Articles/121345/Asynchronous-Communication-in-a-WCF-Service 强>