使用BackgroundWorker处理多个操作

2023-12-26

我在 winform 上有一个 DataGridView 。我在表单的加载方法中动态添加 DatagridViewButtonColumn,按钮名称为 btnAction,文本显示为“Process”。

因此,网格中的每一行的最后一列都会有此“处理”按钮。

在单击此按钮的事件时,我使用 BackgroundWorker 来调用执行一些计算的方法。计算结束后,我需要将网格中该行中单击的按钮的文本更新为“已处理”。现在,我该如何处理这种情况?--> 用户单击多个进程按钮,我需要触发网格中所有相应行的计算。可以使用BackgroundWorker 处理还是我需要在此处使用线程?

如果可能,请协助提供代码片段。


简而言之,同一个BackgroundWorker在运行时不能被再次调用。如果你这样做,你会得到一个错误:

这个BackgroundWorker当前是 忙碌且无法运行多个任务 同时。

StackOverflow 上已经讨论过这个问题:此BackgroundWorker当前正忙,无法同时运行多个任务 https://stackoverflow.com/questions/588150/c-this-backgroundworker-is-currently-busy-and-cannot-run-multiple-tasks-concurre

您需要做的是为每个按钮创建一个新的后台工作人员或对后台工作人员请求进行排队。有一个排队的后台工作者实现here http://thevalerios.net/matt/2008/05/a-queued-backgroundworker/.

无论您采取哪种方式,您都需要小心您编写的代码都是线程安全的。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用BackgroundWorker处理多个操作 的相关文章

随机推荐