C# VisualStudio:如何轻松地将方法及其调用程序转换为异步

C# VisualStudio:如何轻松地将方法及其调用程序转换为异步,c#,visual-studio,asynchronous,task,C#,Visual Studio,Asynchronous,Task,在VS2019中,是否可以更改方法的签名以返回任务或任务,并以级联方式使所有上游调用方异步 在VS2019中,是否可以更改方法的签名以返回任务或任务 简而言之,答案是否定的 因为可以重构方法的名称,如果您选择intellisense选项重命名,则调用方的名称将更改,但它不会处理您想要的任何异步需求。换句话说,重构不支持异步。为了异步,需要将方法标记为异步,并返回任务或任务。我们可以这样改变它: //previously: public int Something() { int some

在VS2019中,是否可以更改方法的签名以返回
任务
任务
,并以级联方式使所有上游调用方异步

在VS2019中,是否可以更改方法的签名以返回任务或任务

简而言之,答案是否定的


因为可以重构方法的名称,如果您选择intellisense选项重命名,则调用方的名称将更改,但它不会处理您想要的任何异步需求。换句话说,重构不支持异步。

为了异步,需要将方法标记为异步,并返回任务或任务。我们可以这样改变它:

//previously:
public int Something()
{
    int something = ...;
    return something;
}

//now
public async Task<int> Something()
{
    int something = ...;
    return await Task.FromResult(something);
}
//以前:
公共int某物
{
int某物=。。。;
归还某物;
}
//现在
公共异步任务
{
int某物=。。。;
返回等待任务。从结果(某物);
}

请注意,这并不意味着它本质上是异步的,它只是负责它的签名。

您的意思是,以一种自动化的方式,比如内置重构?我不这么认为,不是以级联方式。AsyncFixer()是Visual Studio的一个扩展,它将突出显示可以或应该异步的位置。当您将方法标记为这样时,它将点亮下一个级别以进行更改。问题是仅仅更改签名通常是不够的,当异步可用时,不应该依赖于同步方法。AsyncFixer通常也会突出显示这些内容。它离它最近。