class Program
{
static void Main(string[] args)
{
Class1 testcla = new Class1();
testcla.test();
}
}
class Class1
{
public void test()
{
test1();
}
public async void test1()
{
await test2();
}
public async Task<string> test2()
{
WebClient testwc = new WebClient();
var content = await testwc.DownloadStringTaskAsync("www.yahoo.com");
return content;
}
}
您好, 我需要等待DownloadStringTaskAsync完成下载内容,但是当它执行到该行时,它会退出而没有任何错误。
请咨询
答案 0 :(得分:0)
尝试以下代码。正如@Dispersia所述,网址应包含http
,https
,ftp
等。
您的代码必须等待async
任务完成。对于入门者,以下说明将帮助您了解async
。
看看main()
方法,它只运行一个任务,就是这样。 main()
不依赖于async
任务结果的任何值,它结束并且应用程序关闭。 Async
任务,即DownloadStringTaskAsync()
需要很长时间才能完成,但是从WebClient
收到结果,main
方法完成执行并关闭应用程序。因此,你永远不会看到任何结果。
我已对main
函数进行了更改,等待按下Enter键。等待DownloadStringTaskAsync
完成,您将在输出窗口中看到内容长度。然后你可以按回车键
static void Main(string[] args)
{
Class1 testcla = new Class1();
testcla.test();
Console.WriteLine("Wait for async task to finish.");
Console.ReadLine();
}
class Class1
{
public void test()
{
test1();
}
public async void test1()
{
await test2();
}
public async Task<string> test2()
{
try
{
WebClient testwc = new WebClient();
var content = await testwc.DownloadStringTaskAsync("http://www.yahoo.com");
Console.WriteLine("Length of content received: " + content.Length.ToString());
return content;
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
return null;
}
finally
{
Console.WriteLine("Async task done. Press enter to exit.");
}
}
}