Member 11491784 Ответов: 1

Как сделать асинхронную и ожидающую работу в VB.NET


 Dim taskList = New List(Of Task)()

 For Each pair As KeyValuePair(Of String, String) In pairs
 taskList.Add(Task.Factory.StartNew(
 Sub() 
 geXml.Execute()//which returns List(Of String) 
 End Sub
 Next
In this case how can I implement Async Wait call, because I have to use this List(Of String) becasue it is getting data from storage procedure.


Что я уже пробовал:

Для каждой пары как KeyValuePair (of String, String) в парах
задач.Добавить(Задач.Фабрика.StartNew(
Суб()
geXml.Выполнить()//возвращает список(строки)
Конец Подводной Лодки
Следующий

1 Ответов

Рейтинг:
2

Richard Deeming

Предполагая, что вы хотите дождаться taskList и получите результаты, что-то вроде этого должно сработать:

Dim taskList As New List(Of Task(Of List(Of String)))()

For Each pair As KeyValuePair(Of String, String) In pairs
    taskList.Add(Task.Run(Function() geXml.Execute()))
Next

Dim results As IList(Of IList(Of String)) = Await Task.WhenAll(taskList)


Member 11491784

Привет, я не могу использовать его, потому что он говорит, что run не является memebr системы.Нарезание резьбы.Задачи
taskList. Add(Task. Run (вместо этого я использую это
Задача.Factory.StartNew(Функция()

А также ждут задания.WhenAll (taskList) недоступен

Могу ли я использовать somthing liek этот тусклый результат как IList(of IList (of String)) = Await Task.WaitAll(список задач)

Richard Deeming

Значит, вы не используете .NET 4.5?

Какую версию Visual Studio вы используете?

Richard Deeming

Если вы не используете Visual Studio 2015, то вы не можете использовать Async / Await.

Если вы используете Visual Studio 2015, но ориентируетесь на .NET 4.0, вам нужно будет добавить Майкрософт.ОУЗ.Асинхронный[^] Пакет NuGet. Некоторые методы, такие как Task.Run будет принадлежать классу под названием TaskEx вместо. Вам также нужно будет убедиться, что ваши пользователи KB2468871[^] установленный.