Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/solr/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何让Visual Studio Intellisense推荐方法的异步变体_C#_Async Await_Intellisense - Fatal编程技术网

C# 如何让Visual Studio Intellisense推荐方法的异步变体

C# 如何让Visual Studio Intellisense推荐方法的异步变体,c#,async-await,intellisense,C#,Async Await,Intellisense,作为一名库开发人员,如果有必要,我通常会创建Async和Non-Async方法。然而,我发现使用我的库的开发人员通常会在已经异步的方法中使用非异步方法 如何让visual studio(或者可能是resharper???)向开发人员说明存在异步版本,并且在这种情况下建议使用异步版本?我希望有一个属性,我可以把方法 例如: public async Task DoSomething() { var result = MyLibrary.Run(variable); // <- thi

作为一名库开发人员,如果有必要,我通常会创建
Async
Non-Async
方法。然而,我发现使用我的库的开发人员通常会在已经异步的方法中使用非异步方法

如何让visual studio(或者可能是resharper???)向开发人员说明存在异步版本,并且在这种情况下建议使用异步版本?我希望有一个属性,我可以把方法

例如:

public async Task DoSomething()
{
    var result = MyLibrary.Run(variable); // <- this should be var result = await MyLibrary.RunAsync(variable, cancelationToken);

    var businessLogicResult =  doBusinessLogicOnResult(result);

    await someHttpCallThatIsAsync(businessLogicResult);
}
public异步任务DoSomething()
{

var result=MyLibrary.Run(variable);//您可以构建Roslyn分析器以随库提供

从这里开始:

如果您想查看示例,这是一个很好的资源:

代码分析器(又名Roslyn分析器)是一种方法。您可以编写自己的,特别是针对您希望人们使用您的库的方式。您可以将它们添加为库的依赖项,以便在有人使用您的库时自动包含它们。这将给您带来很大的灵活性,但需要做的工作不仅仅是在代码中添加属性。


或者,你可以建议人们使用一套更通用的分析仪(例如,有一个听起来像你想要的那样的“”)你甚至可以直接依赖于分析器库,但是你必须考虑到你的用户对库的感觉是如何导致他们的代码中的其他无关部分得到分析器错误的,而在你可以使用ASYC方法的时候通常是一个好主意,有些情况是你不想要的。使用
ToListAsync()
时,如果您正在读取像
nvarchar(max)这样的大列值,则会导致严重的性能下降
,例如。

方法的非异步版本实际上是完全重写为完全同步的吗?还是它们只是围绕异步方法的包装?请看一看,当它们只键入
async
关键字时,为什么不能选择异步版本并不十分明显。有理由假设它们总是会这样做让我们选择土豚而不是斑马。我发现了许多分析仪,它们帮助我识别了一系列问题,并帮助我大规模地解决了这些问题。我将把它们保存在我的go to grab bad中。这正是我所寻找的: