C# 为什么任务不等待就不能启动

C# 为什么任务不等待就不能启动,c#,.net,.net-4.0,task-parallel-library,C#,.net,.net 4.0,Task Parallel Library,创建任务时: for (int i = 0; i < 5; i++) { // var testClient = Task.Factory.StartNew( () => { TaskClient(); }); } public static void TaskClient() { System.Console.WriteLine("--------------------"

创建任务时:

for (int i = 0; i < 5; i++)
{
   // var testClient =
        Task.Factory.StartNew(
        () =>
        {
            TaskClient();
        }); 
}  

public static void TaskClient()
{
    System.Console.WriteLine("--------------------");
}

当我已经开始使用
StartNew

@vcsjones启动线程时,为什么我们需要调用Wait呢。您看不到结果,因为程序已结束,窗口已关闭

我已经试过你的代码,如果我从cmd运行程序,没有调试器,我可以看到正确的输出。为了让它更有意义,我在
Main
方法的末尾添加了另一个
控制台

for (int i = 0; i < 5; i++)
{
    // var testClient =
    Task.Factory.StartNew(
    () =>
    {
        TaskClient();
    });
}

Console.WriteLine("End of program execution.");
正如你所看到的,它工作得很好

如果要等待进一步执行直到所有任务完成,可以使用
Task.WaitAll
static方法:

var tasks = new Task[5];

for (int i = 0; i < 5; i++)
{
    // var testClient =
    tasks[i] = Task.Factory.StartNew(
                () =>
                {
                    TaskClient();
                });
}

Task.WaitAll(tasks);
var tasks=新任务[5];
对于(int i=0;i<5;i++)
{
//var测试客户端=
tasks[i]=Task.Factory.StartNew(
() =>
{
TaskClient();
});
}
Task.WaitAll(任务);

循环后会发生什么?节目结束了吗?节目可能要结束了。“等待”允许任务在程序退出之前完成(写入控制台)。任务就要开始了,你不需要等待它去做任何事情。
End of program execution.
--------------------
--------------------
--------------------
--------------------
--------------------
var tasks = new Task[5];

for (int i = 0; i < 5; i++)
{
    // var testClient =
    tasks[i] = Task.Factory.StartNew(
                () =>
                {
                    TaskClient();
                });
}

Task.WaitAll(tasks);