您可以使用Task.Run将CPU绑定的工作移动到后台线程

时间:2016-11-04 22:11:14

标签: c# multithreading asynchronous async-await

来自msdn

  

您可以使用Task.Run将受CPU限制的工作移动到后台线程。

我的问题是,还有其他选择吗?如果我想使用await关键字,我必须返回任务,因此我必须使用Task.Run

public static Task<int> LongProcess()
{
    return Task.Run<int>(() =>
    {
        //Long running 
        return 5;
    });
}

public async static void CallProcess()
{
    int a = await LongProcess();
}

不仅仅是代码使用等待的选项吗?如果没有,你能否展示其他选择?如果我不使用Task.Run,​​为什么我需要async / await?

1 个答案:

答案 0 :(得分:1)

这不是只是 CPU密集型工作。更常见的是,您将使用async / await进行I / O工作,否则在等待文件系统,数据库或网络操作完成时会锁定线程。