【发布时间】:2014-03-18 00:20:09
【问题描述】:
我正在尝试理解 c# 中的异步方法 我创建了一个延迟 10 秒的 wcf 服务。我从控制台应用程序调用 wcf 服务,值 asyncValue 永远不会设置。它只是关闭控制台应用程序。
为什么 asyncValue 从未设置为 Ok?
Wcf 服务
[ServiceContract]
[AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)]
public class AsyncService
{
[OperationContract]
public async Task<string> TimeAsync()
{
await Task.Delay(10000);
return "Ok";
}
}
控制台应用程序
static void Main(string[] args)
{
Task<string> asyncValue = GetAsyncTimeFromWcf();
}
private static async Task<string> GetAsyncTimeFromWcf()
{
AsyncService.AsyncServiceClient client = new AsyncService.AsyncServiceClient();
Task<string> asyncTime = client.TimeAsync();
return await asyncTime;
}
【问题讨论】:
-
@L.B 你不能在
main方法中使用await asyncValue,因为它没有被标记为async,你不能将主标记为异步。 -
@user3046164:您可能会发现我的
asyncintro 和asyncconsole app 博客文章很有用。
标签: c# .net wcf async-await