传递给Task后为何更改Int参数

时间:2019-06-25 17:35:33

标签: c# reference task

我真的不确定我是否误解了这里的内容,而且我通常不确定要寻找什么来找到可能的解决方案,这就是为什么我在这里问它。

首先,这是我的代码:

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异步有关?

很抱歉,但是我是“任务和多线程”的新手,我似乎找不到关于该主题的任何现有问题,甚至找不到其他存在相同问题的讨论。

预先感谢

0 个答案:

没有答案