Передача метода в класс BackgroundWorker - C#
Формулировка задачи:
Исходя из темы, размещенной по соседству, пришел к выводу что для нормальной работы многопоточности с WinForm нужно использовать BackgroundWorker.
Но сразу же появляется аналогичная проблема. Как передать в ฺBackgroundWorker метод для исполнения?
тучу примеров перерыл...
метод, использующий BackgroundWorker в классе Worker.cs
P.S. метод Stop() реализован как надо, что-то добавить?
program.cs, откуда надо вызвать метод класса Worker.cs и передать ему *****job*******
собственно и вопрос, как передать метод job?
class Worker { static readonly BackgroundWorker[] workers = new BackgroundWorker[threadCount]; public static int threadCount { get; set; } public void doWork(*****job*******) { while (true) { Console.WriteLine("Starting {0} threads...", threadCount); for (int i = 0; i < threadCount; i++) { workers[i] = new BackgroundWorker(); workers[i].WorkerSupportsCancellation = true; workers[i].WorkerReportsProgress = true; workers[i].DoWork += *****job*******; workers[i].ProgressChanged += ProgressChanged; workers[i].RunWorkerCompleted += RunWorkerCompleted; workers[i].RunWorkerAsync(i + 1); } } } public void Stop() { foreach (var w in workers) { w.CancelAsync(); w.Dispose(); } GC.Collect(); } }
public class Program { public static int j = 0; static void Job(object arg) { Worker worker = new Worker(); Random r = new Random(); Console.WriteLine("Thread {0} is working...", Thread.CurrentThread.ManagedThreadId); for (int i = 0; i < 5; i++) { j++; Console.WriteLine("j = {0}", j); Thread.Sleep(r.Next(500, 1000)); if (j == 50) { worker.Stop(); Console.WriteLine("STOP"); } } wh.Set(); } static void Main(string[] args) { Worker worker = new Worker(); Worker.threadCount = 5; worker.doWork(Job); Console.ReadLine(); }
Решение задачи: «Передача метода в класс BackgroundWorker»
textual
Листинг программы
private void Start_btn_Click(object sender, EventArgs e) { Worker worker = new Worker(); worker.doWork(Job); }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д