任务异步c#编程

任务异步c#编程,c#,asynchronous,task,C#,Asynchronous,Task,我正在用Visual Studio编写C#代码。我在异步任务方法中有一个任务返回函数,如下所示: async Task AwaitForSomeTask() { await DoSomething(); } 我编写了DoSomething()方法的两个可能实现(如下所示)。这两种实现之间有什么区别?每种方法的优点和/或缺点是什么 Task DoSomething() { return Task.Run( () => { // Some code } ); } async

我正在用Visual Studio编写C#代码。我在异步任务方法中有一个任务返回函数,如下所示:

async Task AwaitForSomeTask()
{
    await DoSomething();
}
我编写了
DoSomething()
方法的两个可能实现(如下所示)。这两种实现之间有什么区别?每种方法的优点和/或缺点是什么

Task DoSomething()
{
    return Task.Run( () => { // Some code } );
}

async Task DoSomething()
{
    // Some code
}

提前谢谢你

async
实际上意味着您将在方法中使用
wait
。如果您没有这样做的计划,那么您可以不使用
async
关键字返回任务

在任何情况下,都可以对调用方法执行wait


但在第二种情况下,您将做什么还不清楚,因为很难正确回答。

选项1用于后台CPU受限的工作


选项2适用于异步工作,即涉及
wait
等待其他
任务
返回方法。

使用
async
关键字可以在代码中使用
wait
关键字来执行
等待
其他任务(请参阅)


Task.Run(…)
将安排您的代码由线程池中的线程执行(请参阅)

我建议您阅读可能重复的可能副本。值得一提的是,多个
wait
s将创建多个状态机(幕后),直接返回
任务时
将不会。可能是对性能的考虑。