我正在实现异步方法。但我不确定我所做的是正确的。 例如,该方法写入跟踪并进行一些处理:
Trace.TraceInformation("Synchronous call");
if (null == data)
{
Trace.TraceError("InvalidInputException");
OrdersFaultException connEx = new UnknownFaultException();
throw new FaultException<YnknownFaultException>(connEx);
}
try
{
object o = await //some call;
//check that the object is not null and make some processing
}
}
可以吗?或者我应该改变它不要有“同步”部分 这段代码没有编译它只是显示那些部分代码是“同步”的
答案 0 :(得分:2)
你的代码是正确的没有什么会告诉你不要这样做,但你的代码await //some call;
将阻止服务器端执行,但客户端将保持与调用同步,直到方法服务器端被终止或任何closeTimeout
openTimeout
receiveTimeout
sendTimeout
已达到限制,因此将从客户端忽略通话结果。
为了以异步方式实现调用,您应该使用像svcutil这样的工具来生成带有synchronous
和asynchronous
方法签名的clientproxy。
检查以下链接,其中包含客户端如何异步访问服务操作Call WCF Service Operations Asynchronously