我是否需要将异步添加到 Visual Studio 2017 ASP.NET Core MVC 中的控制器操作

2023-12-31

我刚刚将 Visual Studio 2015 ASP.NET MVC Core 项目转换为 Visual Studio 2017...并且我在错误列表中收到以下信息性消息

消息 IDE1006 违反命名规则:缺少后缀:“Async”

此消息出现在我的控制器中,重点关注以下内容:

public async Task<IActionResult> Index()

这也适用于创建、删除、详细信息和编辑。这些消息显示为信息性消息,并适用于我的项目中的 1,000 多个事件。看来我需要将 Index 更改为 IndexAsync IE。
更改自:

public async Task<IActionResult> Index()
public async Task<IActionResult> Create()
public async Task<IActionResult> Delete(int? id)
public async Task<IActionResult> Details(int? id)

改成:

public async Task<IActionResult> IndexAsync()
public async Task<IActionResult> CreateAsync()
public async Task<IActionResult> DeleteAsync(int? id)
public async Task<IActionResult> DetailsAysnc(int? id)

此时这似乎是可选的,因为我的项目将构建,并且这在 VS 2015 中不是问题。我不介意做这项工作,我需要确认在 Visual Studio 2017 ASP.NET Core 中更改此设置是正确的方法。


Microsoft 正在推动您在异步方法后添加“async”一词。为什么?这发行说明 https://www.visualstudio.com/en-us/news/releasenotes/vs2017-relnotes对于 Visual Studio 2017,请提及这个花絮。

异步方法的类似任务的返回类型:这引入了以下功能 从异步方法返回任何类似任务的类型。以前这些 返回类型被限制为Task<T> and Task.

听起来,仅通过检查其返回类型就很难看出哪些方法是异步的。用 async 后缀可能是个好主意。在VS提出这个“建议”之前,有一个之前的堆栈溢出问题 https://stackoverflow.com/questions/15951774/does-the-use-of-the-async-suffix-in-a-method-name-depend-on-whether-the-async辩论公约。微软的 Stephen Toub 对此进行了阐述,我引用一下。

如果公共方法是任务返回并且本质上是异步的(如 与已知始终同步执行的方法相反 完成但由于某种原因仍然返回一个任务),它应该有 “异步”后缀。这就是指导方针。这里的主要目标是 命名是为了让消费者非常明显 被调用的方法可能无法完成的功能 所有工作同步进行;这当然对案件也有帮助 其中功能通过同步和异步公开 方法,因此您需要名称差异来区分它们。如何 该方法实现其异步实现并不重要 命名:是否使用 async/await 来获得编译器的帮助, 或者是否使用 System.Threading.Tasks 中的类型和方法 直接(例如 TaskCompletionSource)并不重要,因为 就消费者而言,不会影响方法的签名 方法有关。

当然,指南总有例外。最多 在命名的情况下值得注意的一个情况是整个 type 存在的理由是提供以异步为中心的功能, 在这种情况下,每个方法都使用异步就有点过分了,例如这 任务本身产生其他任务的方法。

对于返回 void 的异步方法,不希望有 那些在公共区域的人,因为呼叫者没有好的方法 了解异步工作何时完成。如果你必须暴露一个 不过,您可能会公开返回 void 异步方法 想要一个能够传达异步工作正在发生的名称 启动,如果有意义的话,您可以在此处使用“Async”后缀。 考虑到这种情况应该是罕见的,我认为这确实是一个 视具体情况而定的决定。

我希望这有帮助,史蒂夫

底线是,它是信息性的。但随着 Microsoft 将返回类型扩展到 Task 之外,它开始看起来越来越像最佳实践。使用你自己的判断。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

我是否需要将异步添加到 Visual Studio 2017 ASP.NET Core MVC 中的控制器操作 的相关文章

随机推荐