vb.net - 如何通过将变量名称转换为对象来动态启动多个线程

标签 vb.net casting dynamically-generated

不确定这有多难,或者是否涉及转换,但这就是我想要的(请使用 vb.net 代码)

我想要的只是一个循环,它将创建具有不同名称的不同线程

dim variableName="Thread"
for i as Integer = 0 to 5
    "dim " & variableName & (i) & "as new Threading.Thread"
next

然后启动它们

for i as integer = 0 to 5
    variableName & i.tostring" = New Thread(New ParameterizedThreadStart(AddressOf SubOrFunction))"
    variableName & i.tostring".Start(s)
  1. 如何实现这一目标
  2. 这实际上叫什么(术语)

提前致谢。

最佳答案

通常,当您想要动态地为对象分配名称时,最好使用字典。在字典中,您将使用动态分配的名称的键,并将值用作分配该名称的对象。例如:

Dim d As New Dictionary(Of String, MyClass)()

'Add objects to dictionary
d("dynamic name 1") = New MyClass()
d("dynamic name 2") = New MyClass()

'Get object from dictionary by name
Dim myObject As MyClass = d("dynamic name 1")

同样的方法也适用于线程,例如:

Dim threads As New Dictionary(Of String, Thread)()
Dim variableName = "Thread"
For i As Integer = 0 To 5
    threads(variableName & "(" & i.ToString() & ")") = New Thread()
Next

但是,如果您所做的只是为它们分配数字索引,而不是字符串名称,则可以只使用列表,如下所示:

Dim threads As New List(Of Thread)()
For i As Integer = 0 To 5
    threads.Add(New Thread())
Next

然后你可以通过索引从列表中获取线程,如下所示:

Dim t As Thread = threads(1)

或者,如果您有一定数量的线程,则可以轻松使用数组:

Dim threads(4) As Thread
For i As Integer = 0 To 5
    threads(i) = New Thread()
Next

关于vb.net - 如何通过将变量名称转换为对象来动态启动多个线程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18533135/

相关文章:

c# - 如何制作自动调节控件?

c++ - 如何使用dynamic_cast

sql - 丢弃时间戳中的毫秒部分

javascript - 使用 JavaScript 动态切换占位符颜色

.net - 如何将属性声明为仅限于继承基类的类的泛型类型?

.net - 找出两个列表之间的差异

c# - 如何将 Complex 转换为 double

android - 我可以通过调用另一个类的方法将新列动态添加到 sqlite 表吗?

javascript - 包裹在单选按钮周围的标签标记会阻止单选按钮响应 JavaScript 中的 "change"事件监听器

c# - WPF TextFormatter 中第二行的缩进