В приложении VB.NET (WPF) есть раскрывающиеся списки с названиями штатов и их городов.Я использую цикл для перебора выбранного штата и его городов, и я выполняю некоторые функции, касающиеся городов.Я проверяю N веб-страниц для каждого города в цикле и заполняю таблицу данных с некоторыми результатами, используя BackGroundWorker .
Однако, поскольку я использую фонового работника в цикле, он выполняется и отправляется в фоновый режим, и код продолжает двигаться вперед.Мне нужен код для ожидания до тех пор, пока backgroundworker (RunWorkerAsync) не будет завершен, чтобы перейти к следующей строке.Он отлично работает, когда я использую его для одного города, но когда я использую его в цикле для списка городов, он просто продолжает выполнять следующие строки после backgroundworker, и цикл продолжается.
Я исследовалэто раньше, и единственная возможность, которую дали мне решения, заключалась в том, чтобы ввести RunWorkerCompleted в коде.Это будет означать, что мне придется разделить мой код на две части и поместить материал, который я хочу выполнить позже, в RunWorkerCompleted .Будет ли это работать в цикле?Вот несколько псевдокодов:
For i as integer = 0 to cityCount
Dim city as string = cbCity.SelectedValue.ToString()
worker.RunWorkerAsync
worker.RunWorkerCompleted
cbCity.SelectedIndex += 1
Next
Вот в чем дело.Разве приведенный выше псевдокод не запускает worker.RunWorkerCompleted , пока worker.RunWorkerAsync все еще работает?Будет ли он ждать завершения и завершения worker.RunWorkerAsync , а затем выполнить worker.RunWorkerCompleted ?Я использую BackgroundWorker для заполнения пользовательского интерфейса без его замораживания, а переменная city обновляется на каждой итерации и используется внутри RunWorkerAsync.Итак, по сути, я пытаюсь полностью выполнить worker.RunWorkerAsync, а затем перейти к следующей строке и продолжить цикл.
Извините, если мой язык не имеет смысла.Я исследовал это и попробовал несколько методов, и я здесь, потому что ни один из них не работал.Я не могу поделиться полным кодом из-за некоторых проблем с авторскими правами, но я буду рад предоставить больше информации.