我有一个控制台应用程序,我想一个接一个地启动任务。
这是我的代码:
static void Main()
{
string keywords = "Driving Schools,wedding services";
List<string> kwl = keywords.Split(',').ToList();
foreach(var kw in kwl)
{
Output("SEARCHING FOR: " + kw);
Task t = new Task(() => Search(kw));
t.Start();
t.Wait();
}
Console.ReadLine();
}
static async void Search(string keyword)
{
// code for searching
}
问题在于它不会等待第一个任务完成执行。它会同时触发后续任务。
我正在使用速率有限的API,所以我想一个接一个地做。
为什么在开始下一次搜索之前没有等待一次搜索完成?
答案 0 :(得分:12)
您的gem install nokogiri -v 1.5.11 -- --use-system-libraries
方法只返回async
,这意味着没有简单的方法等待它完成。 (您几乎应该总是避免使用void
方法。它们实际上只是为了订阅活动而提供的。)您的任务只是调用async void
,而您正在等待它&#34;我称之为方法&#34;完成...它将立即完成。
如果您确实想要连续执行某些操作,那么您根本不清楚为什么要使用异步,但我建议您将代码更改为更像这样:
Search