【发布时间】:2016-04-28 19:44:51
【问题描述】:
我目前正在尝试将常规函数作为匿名 BackgroundWorker 的 DoWork 事件运行。我遇到的问题是该方法根本没有运行。我目前的代码如下;-
public class Worker
{
BackgroundWorker worker;
public Worker(Func<bool> action)
{
worker = new BackgroundWorker();
worker.DoWork += (sender, e) => e.Result = action;
worker.RunWorkerCompleted += Worker_RunWorkerCompleted;
this.action = action;
}
private void Worker_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
{
Console.WriteLine("Thread completed : "+ e.Result.ToString());
}
public void DoWork()
{
Console.WriteLine("worker thread: working...");
worker.RunWorkerAsync();
//Wait for worker to complete
do { } while (worker.IsBusy);
}
}
函数是这样传递的:-
Worker workerObject = new Worker(new Func<bool>(() => methodThatReturnsBool(param1, param2)));
Thread workerThread = new Thread(workerObject.DoWork);
workerThread.Start();
如何传递方法并让它在后台工作人员中运行?
【问题讨论】:
-
@mlg 已经看到这个问题了。尝试了这些建议,但没有奏效。因此,为什么我不得不再次问这个问题。
标签: c# backgroundworker