gpt4 book ai didi

c# - 异步框架 TaskEx.Delay 问题

转载 作者:太空宇宙 更新时间:2023-11-03 22:12:15 25 4
gpt4 key购买 nike

我在 C# 中使用 Async Framework CTP 调用 TaskEx.Delay 时发现了一些问题

public async Task<string> TestAsync() {
return await TaskEx.RunEx<string>( async () => { //in real app this is time consuming code so this line is so complex
await TaskEx.Delay( 1000 );
return "test;
} );
}

public async void Test {
var count = 0;
while( count < 100 ) {
var val = await TestAsync();
Console.WriteLine( val ); // in real app this line adds elements to observable collection binded to ListBox
count++;
}
}

控制台上的输出大多出现一次(有时两到三次),但不像我预期的那样出现 100 次。

编辑:

它不是控制台应用程序(上面的代码已简化),它是 WP7 应用程序。不使用延迟它工作正常。

最佳答案

这是因为 Test 方法确实是一个异步方法。 C# 编译器只允许您通过具有 void 返回类型来隐藏它。因此,如果您的主要方法如下所示

public static void Main() {
Test();
}

然后它实际上并没有运行 Test 并等待它完全完成。相反,它实际上是在安排 Test 运行,它的完成将在未来的某个时间点发生。因此,您看到不同的输出是有道理的,因为它与时间相关。

关于c# - 异步框架 TaskEx.Delay 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6217771/

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