【发布时间】:2015-07-02 00:14:41
【问题描述】:
我正在使用后台工作程序,因为我的程序中的某些方法需要时间从互联网下载数据。此方法“阻塞”软件 5-6 秒,所以我想使用后台工作者像线程一样执行该方法。在我的课堂上,我创建了这个:
private BackgroundWorker worker = new BackgroundWorker();
之后,在 ComboBox 选择改变后,我以这种方式调用 BackgroundWorker:
worker.DoWork += new DoWorkEventHandler(doWork);
doWork 方法包含:
public void doWork(object sender, DoWorkEventArgs e)
{
classifica.getClassifica(); //call the method from another class
}
现在我的问题是 BackgroundWorker 没有调用方法 doWork。
我做错了什么?
【问题讨论】:
-
你开始了吗?此外,您不需要 BackgroundWorker 在后台运行某些东西。首选方法是使用
async/await创建异步事件处理程序。 -
调用worker.DoWork没有自动启动?
-
不,你需要在工作对象上调用
RunWorkerAsync -
首先,您不会在任何地方调用它。其次,不,
DoWork是事件处理程序。您需要拨打RunWorkerAsync启动它 -
唯一的问题是该方法已执行但未填充DataGrid。可能是后台工作人员导致了这个错误?