Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/305.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对象还是多个backgroundworker对象?_C#_Backgroundworker - Fatal编程技术网

C# 一个backgroundworker对象还是多个backgroundworker对象?

C# 一个backgroundworker对象还是多个backgroundworker对象?,c#,backgroundworker,C#,Backgroundworker,我有一个.net windows应用程序(单一表单),有许多按钮,如从数据库加载数据、下一页、上一页、搜索等。我希望在单击所有按钮时使用backgroundworker,这样我的UI不会冻结 问题是我应该在整个表单中为所有按钮使用一个backgroundworker对象,还是为每个按钮使用一个单独的backgroundworker对象?这篇文章很有用,如果您只使用一个,那么您需要将所有db操作包装成一个结果。否则,您应该使用多个BackgroundWorker 多个会更好。您可以使用任务工厂进

我有一个.net windows应用程序(单一表单),有许多按钮,如从数据库加载数据、下一页、上一页、搜索等。我希望在单击所有按钮时使用backgroundworker,这样我的UI不会冻结


问题是我应该在整个表单中为所有按钮使用一个backgroundworker对象,还是为每个按钮使用一个单独的backgroundworker对象?

这篇文章很有用,如果您只使用一个,那么您需要将所有db操作包装成一个结果。否则,您应该使用多个BackgroundWorker


多个会更好。

您可以使用任务工厂进行此操作。无需创建自己的后台工作人员,速度更快

 Task<bool> task = Task.Factory.StartNew<bool>
 (() => /*Do you button operations */);
Task Task=Task.Factory.StartNew
(()=>/*是否执行按钮操作*/);
您可以在此处阅读有关任务的更多信息:

请注意,这需要.Net 4.5,如果您的目标是较旧的Framewroks,请查看线程池: