2010-09-28 94 views
0

在backgroundworker_DoWork()中分配工作在Winform应用程序中,我希望使用一个背景工作器(或者可以为每个表单一个)在不同的事件上完成不同的任务。例如:搜索,在网格中加载数据,打开新表单,发送电子邮件,文件传输等。根据条件

如何在backgroundWorker_DoWork()和backgroundWorker_RunWorkerCompleted()事件中管理所有这些?

这样做的最佳方式/最佳实践是什么?

回答

2

通常情况下,我结束了一个参数caling工人,像这样:

backgroundWorker.RunWorkerAsync(<some argument here>); 

那么你的DoWork方法内,你可以从e.Argument检索论证,并根据论证是什么,你知道你想用它做什么。

如果你不需要其他任何参数,你可以用你需要的值进行枚举,例如SearchLoad等,并将其传入,然后检查DoWork内部的值以选择你想做。请记住,你必须抛弃在Dowork内部的枚举,因为e.Argument是一个对象。

关于RunWorkerCompleted,您可以使用DoWork中的值填充e.Result,并在RunWorkerCompleted方法中检索它。

这是做到这一点的最佳方式,并且将一直保持线程安全。