在backgroundworker_DoWork()中分配工作在Winform应用程序中,我希望使用一个背景工作器(或者可以为每个表单一个)在不同的事件上完成不同的任务。例如:搜索,在网格中加载数据,打开新表单,发送电子邮件,文件传输等。根据条件
如何在backgroundWorker_DoWork()和backgroundWorker_RunWorkerCompleted()事件中管理所有这些?
这样做的最佳方式/最佳实践是什么?
在backgroundworker_DoWork()中分配工作在Winform应用程序中,我希望使用一个背景工作器(或者可以为每个表单一个)在不同的事件上完成不同的任务。例如:搜索,在网格中加载数据,打开新表单,发送电子邮件,文件传输等。根据条件
如何在backgroundWorker_DoWork()和backgroundWorker_RunWorkerCompleted()事件中管理所有这些?
这样做的最佳方式/最佳实践是什么?
通常情况下,我结束了一个参数caling工人,像这样:
backgroundWorker.RunWorkerAsync(<some argument here>);
那么你的DoWork方法内,你可以从e.Argument
检索论证,并根据论证是什么,你知道你想用它做什么。
如果你不需要其他任何参数,你可以用你需要的值进行枚举,例如Search
,Load
等,并将其传入,然后检查DoWork内部的值以选择你想做。请记住,你必须抛弃在Dowork内部的枚举,因为e.Argument是一个对象。
关于RunWorkerCompleted,您可以使用DoWork中的值填充e.Result,并在RunWorkerCompleted方法中检索它。
这是做到这一点的最佳方式,并且将一直保持线程安全。