【问题标题】:How can I have threads report back when done, VB.NET完成后如何让线程报告,VB.NET
【发布时间】:2011-08-22 08:24:49
【问题描述】:

我需要几个线程同时处理 VB.NET 2010 应用程序中的 URL 请求。一旦其中一个完成,它应该继续执行列表中的下一个任务。

我是使用线程的新手。由于似乎我无法声明BackgroundWorker 的数组,我想我应该有一个控制类,它为每个任务创建一个任务类的实例,然后在其构造函数中启动一个BackgroundWorker。 但是,使用这种方法,我不确定如何在完成后将结果报告回控制类。我有一个模糊的想法,我可以发送对控件类中对象的引用(或者发送到我可以触发的公共事件,这可能吗?),但是我必须以某种方式存储这个地址,直到工作完成。而且我不知道如何存储 ByRef 中的地址以供将来使用。

我基本上想知道的是:完成这个的标准模式是什么,我应该怎么想,谁能指出一个例子? 谢谢!

【问题讨论】:

    标签: .net vb.net multithreading backgroundworker


    【解决方案1】:

    因为我似乎无法声明 BackgroundWorker 的数组

    可以。在你的情况下,看起来你绝对应该这样做,因为 BackgroundWorker 提供了你需要的功能。

    只需在代码中声明工作者,而不是通过表单设计器:表单设计器不支持控件/组件数组。但在代码中,不存在这样的限制。唯一的问题是您不能将列表/数组/…声明为WithEvents。您需要使用 AddHandler and RemoveHandler 在所有实例上手动注册和取消注册事件处理程序。

    【讨论】:

    • 是的,它告诉我“'WithEvents' 变量不能作为数组输入。”当我尝试时。手动处理程序是我第一次做的另一件事,很有趣!谢谢,正是我需要的。
    猜你喜欢
    • 2017-05-15
    • 1970-01-01
    • 1970-01-01
    • 2019-04-30
    • 1970-01-01
    • 2023-04-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多