16

给定以下 ASP.NET MVC 4 控制器操作:

public async Task<ActionResult> FooAsync()
{
    using (var httpClient = new HttpClient())
    {
        var responseMessage = await httpClient.GetAsync("http://stackoverflow.com");
        string response = await responseMessage.Content.ReadAsStringAsync();

        return Content(response);
    }
}

我是否需要在FooAsync中添加“Async”后缀才能异步运行该操作?

4

2 回答 2

17

虽然这不是必需的,但我喜欢遵循约定并在我的异步方法上看到“...Async”后缀,所以我倾向于使用该ActionName属性来用非异步名称装饰控制器操作,这样你就可以拥有你的蛋糕也吃吧:)

[ActionName("Index")]
public async Task<ActionResult> IndexAsync()
{
    return View();
}

我觉得这很好用。

于 2015-05-14T12:32:19.240 回答
14

不,这不是要求。

按照惯例,您将“Async”附加到具有 Async 或 async 修饰符的方法的名称中。

您可以忽略事件、基类或接口协定建议不同名称的约定。例如,您不应重命名常见的事件处理程序,例如 Button1_Click。

来源:MSDN:使用 Async 和 Await C# 进行异步编程 -> 命名约定

于 2013-02-01T18:39:18.680 回答