C#/WPF: запуск метода parallel
У меня есть пользовательский элемент управления в главном окне с кнопкой (Button1).
Событие Button1_click начинает извлекать данные из веб-сервиса (выполняется >1 час).
Чтобы сократить время, нужно выполнить 10 задач для извлечения данных.
В моем примере метод DoWork() запускается не сразу.
Это начинается после событие Button1_click выполнено.
Таким образом, процесс post не имеет данных.
Как я могу реализовать функцию ожидания, чтобы дождаться завершения всех потоков?
Что я уже пробовал:
элемент управления UserControl:
List<string> fetchedData = new List<string>(); private void Button1_Click(object sender, System.Windows.RoutedEventArgs e) { fetchedData.Clear(); FetchData(); // problem: // (pseudo code) wait until all data is fetched while(true) { break; } // Post process foreach (var item in fetchedData) { // do something with the data (complete data list!) } } private void FetchData() { var threads = new Thread[10]; for (int segment = 0; segment <= 9; segment++) { var worker = new ThreadStart( ()=>this.Dispatcher.BeginInvoke( DispatcherPriority.Normal, (ThreadStart)delegate () { DoWork(iSegment); //executed AFTER exiting the button1_click event } ) ); threads[segment] = new Thread(worker); threads[segment].Start(); } } private void DoWork (int segment) { fetchedData.Add( Helpers.GetWebserviceData(segment) ); // output some data to the mainWindow to see the actual process Helpers.mainWindow.LabelStatus.Content = "Current segment: " + i.ToString(); }