控制台应用程序中的Task.Run()打印奇怪的结果

时间:2018-12-09 20:00:31

标签: c# multithreading async-await console-application

我尝试运行此代码,但结果却与预期不符

using System;
using System.Collections.Generic;
using System.Threading.Tasks;

namespace Test
{
    public class Program
    {
        public static void Main(string[] args)
        {
            var tasks = new List<Task>();

            for (int i = 0; i < 100; i++)
            {
                var task = Task.Run(() =>
                {
                    Console.WriteLine(i);
                });
                tasks.Add(task);
            }
            Task.WaitAll(tasks.ToArray());

            Console.WriteLine("done");   
        }
    }
}

我希望结果是100个数字0-99的列表,并且没有重复

但是我在https://dotnetfiddle.net/上得到了一个列表,该列表丢失并重复,例如6677899999 ... 99(丢失0-5,重复项)

如果在Visual Studio上运行,我会得到“ 100”的列表

那为什么会这样呢?为什么Visual Studio与https://dotnetfiddle.net/之间有区别?该如何解决?

0 个答案:

没有答案