Task.Run()代码是否异步执行?

时间:2018-09-22 08:48:00

标签: c# asp.net multithreading asynchronous parallel-processing

我已经定义了此分组代码。谁能告诉我此代码是异步还是并行? 此块代码仅是示例。它创建四个线程,最后等待所有线程完成。

public Form1()
    {
        InitializeComponent();

        var t1 = Task.Run(() =>
        {
            GetSum();
        });

        var t2 = Task.Run(() =>
        {
            GetSum();
        });

        var t3 = Task.Run(() =>
        {
            GetSum();
        });

        var t4 = Task.Run(() =>
        {
            GetSum();
        });

        Task.WaitAll(t1, t2, t3, t4);
    }

    private int GetSum()
    {
        int sum = 0;

        for (int i = 0; i < int.MaxValue; i++)
        {
            sum += i;
        }

        return sum;
    }

1 个答案:

答案 0 :(得分:0)

首先,任务不会直接创建线程。任务通过ThreadPool机制处理线程。它是异步的。这是因为静态方法Task.Run()将排队等待在ThreadPool中执行的工作返回给调用者。