Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/280.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用BackgroundWorker处理多个操作_C#_Winforms_Multithreading_Datagridview_Backgroundworker - Fatal编程技术网

C# 使用BackgroundWorker处理多个操作

C# 使用BackgroundWorker处理多个操作,c#,winforms,multithreading,datagridview,backgroundworker,C#,Winforms,Multithreading,Datagridview,Backgroundworker,我在winform上有一个DataGridView。我在表单的加载方法中动态添加DatagridViewButtonColumn,按钮名称为btnAction,文本显示为“Process” 因此,网格中的每一行的最后一列中都会有这个进程按钮 单击此按钮的事件时,我正在使用BackgroundWorker调用一个进行一些计算的方法。计算结束后,我需要将网格中该行中单击按钮的文本更新为“已处理”。现在,我如何处理这种情况?--> 用户单击多个进程按钮,我需要触发网格中所有对应行的计算。是否可以使用B

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

因此,网格中的每一行的最后一列中都会有这个进程按钮

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


如果可能,请帮助编写代码片段。

我在使用BackgroundWorker流程时遇到过类似的情况

下面的Codeproject文章帮了我很大的忙


简单的回答是,同一个BackgroundWorker在运行时不能再次调用。如果这样做,您将得到一个错误:

此BackgroundWorker当前正在运行 忙,无法运行多个任务 同时

此问题已在StackOverflow上讨论:

您需要做的是为每个按钮创建一个新的后台工作程序,或者将后台工作程序请求排队。有一个排队的后台工作程序实现

无论您选择哪种方式,都需要注意您编写的代码都是线程安全的。


将向您展示如何处理backgroundworker.runworkercompleted事件,该事件将允许您在backgroundworker完成后执行某些操作(无论是错误还是完成,您都必须进行检查)。

bust->busy?-我想我更喜欢bust:)下面是一个例子,为什么我们应该复制StackOverflow上的代码示例,而不是仅仅链接资源……对于上下文,这个问题在前面被问到,后台工作人员的响应是什么问题。现在我认为问题在于运行多个后台进程@用户74042对吗?是的,没错,大卫。谢谢。