我有一个简单的控制台应用程序
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ConsoleApplication2
{
public class Program
{
static void Main(string[] args)
{
MockAPI api = new MockAPI();
Task t = api.GetVersion();
var placeBreakPoint = "breakpoint";
}
}
public class MockAPI
{
public async Task<string> GetVersion()
{
return await APIVersion();
}
private async Task<string> APIVersion()
{
await Task.Delay(3000);
return "v1.0";
}
}
}
当我第一次执行它时,因为我希望看到代码一直到
await Task.Delay(3000);
然后返回
var placeBreakPoint = "breakpoint";
返回
之前return "v1.0";
延迟完成时。但是,此后运行代码会看到代码像以前一样执行,但永远不会从Task.Delay
返回。我在这里遗漏了一些基本的东西。
答案 0 :(得分:1)
您没有等待任务,因此在任务有机会完成之前您的申请已经结束。
您需要Wait
或await
它(您不能在Main
中执行,但应该在其他任何地方执行此操作。)
static void Main(string[] args)
{
MockAPI api = new MockAPI();
Task t = api.GetVersion();
var placeBreakPoint = "breakpoint";
t.Wait();
}