我正在练习 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 时,我应该在服务执行并返回 eval 时立即看到“Waiting...”。相反,两者都需要 5 秒,同时出现带有“Waiting...”的 eval。
我发现了这个,它建议在完成的回调中关闭客户端,所以现在我只是将它注释掉(因为我不知道如何在完成的回调中关闭它。该部门的任何帮助也将不胜感激)。好吧,那没有帮助。是的,我的服务引用已经设置为允许异步操作。
我在这里有点不知所措。有什么建议么?