【发布时间】:2021-10-18 00:58:01
【问题描述】:
我想在线程中启动方法时将参数传递给方法。
例如,我还想在 k=0 到 k=10 的 for 循环的上下文中执行此操作。
此外,我希望每个线程彼此独立。到目前为止,我有这个:
for (int k = 0; k < 3; k++){new Thread(() => Method2(list[k])).Start();}
其中Method2应该做一些处理,定义如下(body不重要,它基本上是创建并写入文件):
public static void Method2(string SYM)
不知何故,当我运行代码时,我确实创建了三个线程,但传递给每个线程的参数似乎只是所有三个线程的 list[2] 参数。我希望每个线程分别有 list[0] list[1] list[3] 作为参数。
【问题讨论】:
-
新线程((obj) => Method2(list[(int)obj)).Start(k);
-
或者... new Thread((obj) => Method2((string)obj)).Start(list[k]);
-
我认为问题在于变量 k 是线程之间共享的。试试
foreach( int k in Enumerable.Range( 0, 3 ) ) -
为什么要特别使用线程而不是任务?
-
您是否有意“设置并忘记”您创建的每个
Thread?
标签: c# multithreading