Backgroundworker из класса - C#
Формулировка задачи:
Вечер добрый!
Есть класс Как сделать, чтобы метод Load работал в потоке backgroundworker?
Работать с backgroundworker
Func.cs
, в нем метод Load. На форме, Load вызывается так:Func.Load("какой-то текст");вне
класса, вроде, разобрался как, а как в классе его вызывать не пойму Подскажите, пожалуйста, как разобраться в этой ситуации и если не затруднит, приведите пример.Решение задачи: «Backgroundworker из класса»
textual
Листинг программы
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.ComponentModel;
using System.Data;
namespace ConsoleApplication31 {
class Program {
static void Main(string[] args) {
MyWorker worker = new MyWorker();
worker.ProgressChanged += new ProgressChangedEventHandler(worker_ProgressChanged);
worker.RunWorkerCompleted += new RunWorkerCompletedEventHandler(worker_RunWorkerCompleted);
worker.RunWorkerAsync();
}
static void worker_ProgressChanged(object sender, ProgressChangedEventArgs e) {
//Тут отображение прогресса асинхронной операции
}
static void worker_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e) {
//Тут проверяем результат и передаем его методу, выводящему его в отображение...
if (e.Result != null && e.Result is DataTable) {
UpdateView(e.Result as DataTable);
}
}
static void UpdateView(DataTable dt) {
//Тут обновляем отображение данных...
}
}
public class MyWorker : BackgroundWorker {
DataTable dt;
public MyWorker() {
this.WorkerReportsProgress = true;
this.WorkerSupportsCancellation = true;
}
protected override void OnDoWork(DoWorkEventArgs e) {
Run(e);
}
void Run(DoWorkEventArgs e) {
dt = new DataTable();
//Тут запрашиваем таблицу из БД...
//И заполняем ее данными...
e.Result = dt;
}
}
}