私は 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 秒かかり、「待機中...」の評価が同時に表示されます。
完了したコールバックでクライアントを閉じることを提案するthisを見つけたので、今のところコメントアウトしました (完了したコールバックでクライアントを閉じる方法がわからないためです。その部門の助けもいただければ幸いです)。まあ、それは役に立ちませんでした。はい、私のサービス参照はすでに非同期操作を許可するように設定されています。
私はここで少し途方に暮れています。助言がありますか?