1
嗨,我是新的异步编程。我如何运行我的方法checkAvaible来运行异步?如果可能的话,我希望一次下载2500页,不要等到完成一个下载并开始另一个下载。我怎么做到的?使方法运行异步的最佳方式是什么?
private static void searchForLinks()
{
string url = "http://www.xxxx.pl/xxxx/?action=xxxx&id=";
for (int i = 0; i < 2500; i++)
{
string tmp = url;
tmp += Convert.ToString(i);
checkAvaible(tmp); // this method run async, do not wait while one page is downloading
}
Console.WriteLine(listOfUrls.Count());
Console.ReadLine();
}
private static async void checkAvaible(string url)
{
using (WebClient client = new WebClient())
{
string htmlCode = client.DownloadString(url);
if (htmlCode.IndexOf("Brak takiego obiektu w naszej bazie!") == -1)
listOfUrls.Add(url);
}
}
虽然你已经将它标记为“async”,但是你的两种方法都是同步的。 –
好的我已经编辑并从方法中删除了异步searchForLinks – Icet
方法应该返回'async void'的唯一时间是GUI事件处理程序。 https://msdn.microsoft.com/en-us/magazine/jj991977.aspx – MickyD