C# 线程池中的方法调用堆栈
我有这行资料来源C# 线程池中的方法调用堆栈,c#,task,threadpool,C#,Task,Threadpool,我有这行资料来源 for (int i = 0; i < 100; i++) { Task.Run(()=> Console.WriteLine(i)); } for(int i=0;iConsole.WriteLine(i)); } 我期望输出像0,1,2,3,…,99,但我得到的是100100,…,100 我不是在要求一个解决方案来获得我想要的输出,我只是在问线程池中正在排队的调用是什么 我想象类似于Console.Writeline(I上的参考)的东西正在排队等待线程
for (int i = 0; i < 100; i++)
{
Task.Run(()=> Console.WriteLine(i));
}
for(int i=0;i<100;i++)
{
Task.Run(()=>Console.WriteLine(i));
}
我期望输出像0,1,2,3,…,99,但我得到的是100100,…,100
我不是在要求一个解决方案来获得我想要的输出,我只是在问线程池中正在排队的调用是什么
我想象类似于Console.Writeline(I上的参考)
的东西正在排队等待线程池
有人能解释一下我的代码是如何处理的以及为什么吗?在使用变量之前,您需要创建一个本地副本,因为
i
在线程看到它时会发生变化:
for (int i = 0; i < 100; i++)
{
var x = i;
Task.Run(()=> Console.WriteLine(x));
}
for(int i=0;i<100;i++)
{
var x=i;
Task.Run(()=>Console.WriteLine(x));
}
您是否至少尝试过在谷歌上搜索“C#在循环中启动任务”?第一个结果指向类似的问题,正如我所说的,我不是在寻找解决方案。我正在查找线程池中正在排队的内容。(是的,sent不是正确的单词)@canton7最后一点不正确