gpt4 book ai didi

c# - await 立即移动到下一条语句

转载 作者:太空狗 更新时间:2023-10-30 00:08:44 25 4
gpt4 key购买 nike

我正在使用新的 Async CTP 位,但我无法让它与服务器端或命令行程序一起工作(所有示例都是 WPF 或 Silverlight)。例如,一些简单的代码,如:

class Program {
static void Main() {
Program p = new Program();
var s = p.Ten2SevenAsync();
Console.WriteLine(s);
}

private async Task<int> Ten2SevenAsync() {
await TaskEx.Delay(10000);
return 7;
}
}

立即返回并打印 System.Threading.Tasks.Task1[System.Int32]` 而不是等待 10 秒并返回 7(如我所料)。一定是我遗漏的明显东西。

最佳答案

基于等待的代码的全部要点在于它确实是“完成后执行下一个东西”(回调),并且不是“阻塞当前线程,直到它完成”。

因此,您从 Ten2SevenAsync 得到一个任务,但该任务尚未完成。将任务写入控制台并不意味着等待它完成。如果你想阻止任务完成:

static void Main() {
Program p = new Program();
var s = p.Ten2SevenAsync();
Console.WriteLine(s.Result);
}

或更明确地说:

static void Main() {
Program p = new Program();
var s = p.Ten2SevenAsync();
s.Wait();
Console.WriteLine(s.Result);
}

关于c# - await 立即移动到下一条语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6183447/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com