【问题标题】:One backgroundworker object or multiple backgroundworker objects?一个后台工作者对象还是多个后台工作者对象?
【发布时间】:2014-06-12 06:10:59
【问题描述】:

我有一个 .net windows 应用程序(单个表单),有很多按钮,例如从数据库加载数据、下一页、上一页、搜索等。我想在单击所有按钮时使用 backgroundworker,所以我的 UI 没有冻结。

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

【问题讨论】:

    标签: c# backgroundworker


    【解决方案1】:

    这篇文章很有用,如果您只使用一个,则需要将所有 db 操作包装到一个结果中。否则,您应该使用多个后台工作人员。

    Handling multiple operations using BackgroundWorker

    多个会更好。

    【讨论】:

      【解决方案2】:

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

       Task<bool> task = Task.Factory.StartNew<bool>
       (() => /*Do you button operations */);
      

      您可以在此处阅读有关任务的更多信息:http://msdn.microsoft.com/en-us/library/system.threading.tasks.task.aspx

      请注意,这需要 .Net 4.5,如果您的目标是较旧的 Framewroks,请查看线程池: http://msdn.microsoft.com/en-us/library/3dasc8as.aspx

      【讨论】:

        猜你喜欢
        • 2011-07-18
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-07-29
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多