【发布时间】:2021-10-29 20:51:28
【问题描述】:
程序.cs:
class Program
{
static void Main()
{
Class1 c1 = new Class1();
for(int i=0;i<2;i++)
{
Thread t = new Thread(() =>
{
c1.pr(i);
});
t.Start();
}
}
}
Class1.cs:
public class Class1
{
public void pr(int i)
{
Console.WriteLine((i).ToString());
}
}
结果: 2 2
我希望结果为 0 1。对于每个线程,将 i 的值分配给函数 'pr'。
如果我在t.Start() 之后添加t.Join(),它就可以工作。但是加入的线程必须等到其他线程完成工作,有没有不使用 Join() 函数提供相同结果的解决方案?我想同时执行它们
【问题讨论】:
-
尝试在循环内设置临时变量
var temp = i; Task.Run(() => c1.pr(temp));
标签: c# multithreading