我有一种情况,我希望异步地启动用户定义的任务数量,并等待它们全部完成。简化一下,这是我要处理的:
[TestMethod]
public async Task Start() {
var numDrivers = 2;
while (numDrivers != 0) {
var rnd = new Random();
var r = rnd.Next(itemArray.Count);
var target = itemArray[r];
var proxyDriver = GetProxiedDriver();
Task.Run(() => HandleIntro(proxyDriver, target));
numDrivers--;
}
}
对于某些上下文--这些是Selenium WebDriver正在加速运行一些UI测试。我看到浏览器弹出,但只要最后一个
我尝试了
HandleIntro:
private async Task HandleIntro(FirefoxDriver driver, string target) {
// do stuff
}
null
[TestMethod]
public async Task Start()
{
var numDrivers = 2;
List<Task> tasks = new List<Task>();
while (numDrivers != 0)
{
var rnd = new Random();
var r = rnd.Next(itemArray.Count);
var target = itemArray[r];
var proxyDriver = GetProxiedDriver();
tasks.Add(Task.Run(() => HandleIntro(proxyDriver, target)));
numDrivers--;
}
await Task.WhenAll(tasks);
}