如何在using语句中调用异步wcf方法?

Sai*_*int 1 c# wcf asynchronous using-statement

在同步模型中,它很简单

using (MyServiceClient msc = new MyServiceClient())
{
   msc.Method();
}
Run Code Online (Sandbox Code Playgroud)

但如果我必须等到这个方法的结束,然后做一些事情,它就无法工作

private void EventHandler<MethodCompletedEventArgs> myEventHandler = new EventHandler<MethodCompletedEventArgs>(methodBody);

using (MyServiceClient msc = new MyServiceClient())
{
   msc.MethdCompleted += myEventHandler;
   msc.BeginMethod();
}

private void MethodBody()
{
//exception: client state is aborted
}
Run Code Online (Sandbox Code Playgroud)

另外如何在using语句中调用异步mehod ?

Roy*_*tus 6

你不应该这样做.

您应该MyServiceClient正常实例化,然后Dispose在异步回调处理程序中实例化.

这是确保在调用回调处理程序后实例仍然存在的唯一方法,并且在回调处理程序完成其工作后它将被销毁.