【发布时间】:2014-01-04 05:35:04
【问题描述】:
我正在使用这个解决方案: How to correctly write async method?
但是,异步方法似乎不会立即返回,而是需要一段时间。这里是
class Program
{
static void Main(string[] args)
{
Debug.WriteLine("Calling DoDownload");
var downloadTask = DoDownloadAsync();
Debug.WriteLine("DoDownload done");
downloadTask.Wait(); //Waits for the background task to complete before finishing.
}
private static async Task DoDownloadAsync()
{
WebClient w = new WebClient();
string txt = await w.DownloadStringTaskAsync("http://www.google.com/");
Debug.WriteLine(txt);
}
}
“DoDownload Done”正在下载文本之前打印,但需要一段时间(我认为它正在等待下载完全返回打印它。)我做错了什么?
【问题讨论】:
-
@AD.Net 不,他所拥有的是正确的,因为他正在尝试做的事情。
-
@SriramSakthivel 他想要首先打印它。这就是重点。它不是。该文本应该几乎立即出现;这是他所期待的,但他声称事实并非如此。
-
在返回任务之前,可能有些工作正在同步完成。例如,它可能会在您的 URL 上进行 DNS 查找并创建套接字,仅异步执行套接字发送/接收部分。
-
我遇到了一些奇怪的行为,有时需要 2 秒,有时需要 11 秒。
-
对于在没有附加调试器的情况下运行的发布版本,我得到了 30-40 毫秒的延迟。
标签: c# async-await c#-5.0