For Each account In _accounts11
Dim newtask = account.readbalancesAsync()
newtask = newtask.ContinueWith(Sub() account.LogFinishTask("Getting Balances", starttime))
newtask = newtask.ContinueWith(Async Function() account.getOrdersAsync())
newtask = newtask.ContinueWith(Sub() account.LogFinishTask("Getting Orders", starttime))
tasklist.Add(newtask)
Next
Await Task.WhenAll(tasklist.ToArray)
Dim b = 1
По сути, для каждой учетной записи я хочу сделать account.readbalancesAsync, а после этого я хочу сделать account.getOrdersAsync().
Я оставил код newtask.ContinueWith(Sub() account.LogFinishTask("Getting Balances", starttime))
, чтобы показать, что знаю, как работает ContinueWith. Однако после этого мне нужно продолжить другую задачу.
Как мне это сделать?
То, что я пытаюсь сделать, это что-то вроде этого
For Each account In _accounts11
await account.readbalancesAsync()
account.LogFinishTask("Getting Balances", starttime)
await account.getOrdersAsync())
account.LogFinishTask("Getting Orders", starttime)
tasklist.Add(newtask)
Next
Очевидно, что если я сделаю это так, то одной учетной записи придется ждать завершения работы другой учетной записи. Я хочу, чтобы все учетные записи работали параллельно.
Или давайте посмотрим на этот код
dim response1 = await client.GetAsync("http://example.com/");
dim response2 = await client.GetAsync("http://stackoverflow.com/");
Скажи, что я делаю это так
dim newtask = client.GetAsync("http://example.com/").continueWith(....)
await newtask
Что мне поставить....
ContinueWith
? Хотя мне очень хотелось бы знать, почему вы в первую очередь используете все эти задачи продолжения, а не просто заключаете все в лямбда-блокSub()
/End Sub
? Поскольку каждая задача уже запущена в фоновом режиме, нет смысла создавать их больше, чем необходимо. - person Visual Vincent   schedule 29.04.2019