完成后如何让线程报告回来,VB.NET

时间:2011-08-22 08:24:50

标签: .net vb.net multithreading backgroundworker

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

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

我基本上想知道的是:实现这一目标的标准模式是什么,我应该如何思考,任何人都可以指出一个例子? 谢谢!

1 个答案:

答案 0 :(得分:2)

  

因为我似乎无法声明BackgroundWorker

的数组

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

只需在代码中声明worker,而不是通过Forms Designer:Forms Designer不支持控件/组件数组。但在代码中,不存在这样的限制。唯一的问题是你不能将lists / arrays / ...声明为WithEvents。您需要使用AddHandler and RemoveHandler在所有实例上手动注册和取消注册事件处理程序。