我真的不确定我是否误解了这里的内容,而且我通常不确定要寻找什么来找到可能的解决方案,这就是为什么我在这里问它。
首先,这是我的代码:
class Program
{
static void Main(string[] args)
{
int sleepTime = 10000;
const int totalTasksToCreate = 10;
Task[] tasks = new Task[totalTasksToCreate];
for (int i = 0; i < totalTasksToCreate; ++i)
{
tasks[i] = Task.Factory.StartNew(() => TaskAction(sleepTime));
sleepTime /= 2;
}
Task.WaitAll(tasks);
}
private static void TaskAction(int sleepTime)
{
Thread.Sleep(sleepTime);
Console.WriteLine(sleepTime);
Console.Beep();
}
}
这是非常基本的,我只是想创建一个Beeping-Machine,在每次发出哔声后都以较短的间隔发出哔声(并且由于某些原因,我想执行任务)。
但是,我一直想知道为什么“睡眠时间”总是总是接近0(在这种情况下为9),并且我真的不确定为什么会这样,因为在使用Task-Factory创建Task后我只是将值减半了
引用是否传递了int参数?还是与StartNew-Method异步有关?
很抱歉,但是我是“任务和多线程”的新手,我似乎找不到关于该主题的任何现有问题,甚至找不到其他存在相同问题的讨论。
预先感谢