【问题标题】:multiple backgroundworker vb.net多个后台工作者 vb.net
【发布时间】:2011-07-18 11:25:51
【问题描述】:

我需要使用 backgroundwoker 在后台运行多个任务

例如dim mybacgroundwokers(10) as backgroundwoker

在后台工作者事件过程中,我可以这样做吗,因为我不知道

mybackgroundwoker_dowork(,,index)

select case index
case 1
'dowork for backgroundworker1
case 2
'dowork for backgroundworker2
end select

或者我如何处理多个后台工作人员

如果后台工作者无法做到这一点,我该如何使用线程多线程来做到这一点?

谢谢

【问题讨论】:

    标签: vb.net winforms multithreading backgroundworker


    【解决方案1】:

    您应该使用多个具有合适名称的Backgroundworkers,例如:

    Dim CountSheepBackgroundWorker As BackgroundWorker WithEvents
    Dim CountStarsBackgroundWorker As BackgroundWorker WithEvents
    Dim StackEggsBackgroundWorker As BackgroundWorker WithEvents
    

    如果您绝对想使用数组,Visual Studio 将无法帮助您使用 DoWork Subs:

    Dim MyBackgroundWorkers(9) As BackgroundWorker
    ' Add first
    MyBackgroundWorkers(0) = new BackgroundWorker
    AddHandler MyBackgroundWorkers(0), AddressOf FirstBackgroundWorker_DoWork
    MyBackgroundWorkers(0).RunWorkerAsync()
    ' Add second etc
    

    【讨论】:

    • 在 Designer 中选择第一个 Backgroundworker 并通过双击 Event 添加 DoWork Handler,在其他 Backgroundworkers 中只需从下拉列表中选择现有的 Sub。这扩展了 Sub 的 Handles ... 子句。或者,您可以将多个 AddHandler BackgroundWorker1 ... 与同一个 Sub 一起使用。
    【解决方案2】:

    你可能想看看这个帖子

    Trigger Backgroundworker Completed event

    您的 DIM 命令只是创建一个数组,该数组最多可以存储 11 个(请记住,索引从 0 开始)后台工作对象。

    因此,您需要创建 11 个新的 BackgroundWorker 对象并将它们存储在数组的每个元素中。

    然后,您需要自行配置每个 BackgroundWorker 对象以执行任何必要的工作。将它们放在一个数组中并不会改变这一切。

    【讨论】:

    • 这与我的问题无关。我试图简单地创建多个线程来处理我的应用程序中的更多任务,我求助于使用后台工作程序。我是这个主题的新手,我需要建议和帮助吗
    • 好的,但是您需要记住,尽管编程可能很困难,但多线程编程可能会困难几个 + 数量级 + 。实际上+从来没有+你可以用多线程“简单地”做任何事情的情况。不是想劝阻你,我只是说你+真的+需要深入了解为什么要添加多个线程以及在深入研究之前使用该技术可以完成什么。
    • 例如,您是否希望允许后台功能同时保持 UI“活动”并防止应用看起来像被锁定?还是您只需要同时处理一堆队列?如果是后者,创建一个在单独进程中运行的单独应用程序可能更有意义,您可以根据需要启动全新的进程,并使用数据库表记录每个工作人员的进度。有很多方法可以处理这样的事情,而线程是一个复杂的话题。
    • @devwnture 例如,我需要下载 20 个文本文件,处理每个文本文件并上传回我的服务器,我可能需要一个一个一个一个地下载所有文件,其他工作人员应该寻找文件并对其进行处理,最后一个工作人员应查找已处理的文件并将其上传回来。这是一个示例任务,我至少需要三个后台工作人员
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多