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;
- }
- }
- }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д