sathishvegeta Ответов: 1

Как объединить результат(datatable), полученный из каждого фонового процесса


В приведенном ниже коде я создал фоновый процесс динамически,мой вопрос заключается в том , как объединить или объединить данные, полученные от каждого из фоновых процессов, есть ли какой-либо способ заставить приведенный ниже код работать

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

For Each value In intersect
                NumWorkers = NumWorkers + 1
                'MessageBox.Show(NumWorkers.ToString)
                ReDim Workers(NumWorkers)
                Workers(NumWorkers) = New BackgroundWorker
                Workers(NumWorkers).WorkerReportsProgress = True
                Workers(NumWorkers).WorkerSupportsCancellation = True
                AddHandler Workers(NumWorkers).DoWork, AddressOf WorkerDoWork
                Workers(NumWorkers).RunWorkerAsync(value)
                AddHandler Workers(NumWorkers).RunWorkerCompleted, AddressOf WorkerCompleted
            Next

 Private Sub WorkerDoWork(sender As Object, e As System.ComponentModel.DoWorkEventArgs)

         objclient.From_date = From_Date.Value.ToString("MM/dd/yyyy")
        objclient.To_date = To_Date.Value.ToString("MM/dd/yyyy")
        objclient.Connection_String = e.Argument
        ds = objclient.FileCompleted()
        ds.merger(ds)

    End Sub

1 Ответов

Рейтинг:
2

Wendelius

Если я правильно понял ваш вопрос, одним из довольно грубых способов было бы то, что вы храните "основную" таблицу данных вне фоновых рабочих, возможно, в статическом поле.

В конце каждого рабочего используйте объект DataTable.Метод Слияния (System.Data)[^] для объединения таблиц данных. Просто не забудьте использовать Ключевое Слово Synclock Заявление | Документы Майкрософт[^] для предотвращения одновременных операций слияния