BackgroundWorker имеет встроенный метод обратного вызова RunWorkerCompleted
, к которому вы подключаетесь, и он автоматически обрабатывает межпотоковый маршалинг в поток пользовательского интерфейса. Перед вызовом RunWorkerAsync
вы можете подключиться к событию RunWorkerCompleted
.
backgroundWorker1.RunWorkerCompleted +=
new RunWorkerCompletedEventHandler(
backgroundWorker1_RunWorkerCompleted);
в пределах backgroundWorker1_RunWorkerCompleted
вы можете связать свою сетку или установить свойство DataSource для DataTable, и оно будет в потоке пользовательского интерфейса.
Если вы уже сделали это и получаете ошибки, это может быть просто необработанное исключение в самом DoWork / поточном коде. Если это так, оберните вызов RunWorkerAsync
в попытку и посмотрите, что вы получите.
Надеюсь, что поможет ...