前面示例中的方法调用不能包含任何参数或返回值。这一限制是使用此方法创建和运行线程的主要缺点之一。然而,可以通过将在单独的线程中运行的过程包装到类或结构中,为它们提供参数,并使之能返回参数。
Class TasksClass Friend StrArg As String Friend RetVal As Boolean Sub SoMetask() ' 将 StrArg 字段用作参数。 MsgBox("StrArg 包含字符串" & StrArg) RetVal = True ' 设置返回参数的返回值。 End SubEnd Class' 要使用类,请设置存储参数的属性或字段,' 然后,根据需要异步调用方法。Sub DoWork() Dim Tasks As New TasksClass() Dim Thread1 As New System.Threading.Thread( _ AddressOf Tasks.SoMetask) Tasks.StrArg = "某个参数" ' 设置用作参数的字段。 Thread1.Start() ' 启动新线程。 Thread1.Join() ' 等待线程 1 运行结束。 ' 显示返回值。 MsgBox("线程 1 返回值" & Tasks.RetVal)End Sub手动创建和管理线程最适合需要控制细节(例如线程优先级和线程模型)的应用程序。可以想象,使用这种方法管理大量线程将是非常困难的。如果需要很多线程,可以考虑使用线程池以降低复杂程度。