小编sev*_*nmy的帖子

返回任务或等待和ConfigureAwait(false)

假设有一个像这样的方法的服务库

public async Task<Person> GetPersonAsync(Guid id) {
  return await GetFromDbAsync<Person>(id);
}
Run Code Online (Sandbox Code Playgroud)

遵循SynchronizationContext的最佳实践最好使用

public async Task<Person> GetPersonAsync(Guid id) {
  return await GetFromDbAsync<Person>(id).ConfigureAwait(false);
}
Run Code Online (Sandbox Code Playgroud)

但是当你只有一个操作(我认为)最好直接返回任务.请参阅异步方法的结尾,我应该返回还是等待?

public Task<Person> GetPersonAsync(Guid id) {
  return GetFromDbAsync<Person>(id);
}
Run Code Online (Sandbox Code Playgroud)

在最后一种情况下,您不能使用ConfigureAwait(false),因为不等待该方法.

什么是最好的解决方案(以及为什么)?

c# async-await

12
推荐指数
1
解决办法
2867
查看次数

Global.asax 中的 ASP.NET MVC Application_Error 处理程序

在 Global.asax 中,我们有一个名为 MvcApplication 的 System.Web.HttpApplication 类型的类,它代表应用程序,我们可以在其中处理各种事件。

我对 Application_Error 处理程序感兴趣。在这个处理程序中,我们可以使用类 MvcApplication 的所有属性。

-1-

'(MvcApplication)sender' 和 'this' 是同一个对象总是正确的吗?

protected void Application_Error(object sender, EventArgs e)
{
  var httpApp = (MvcApplication)sender;
  var equality1 = httpApp == this; // always true?
}
Run Code Online (Sandbox Code Playgroud)

-2-

获得错误的最佳方法是什么?以下示例返回相同的错误?

Exception ex0 = this.Context.Error;
Exception ex1 = httpContext.Error;
Exception ex2 = Server.GetLastError();
var equality3 = ex1 == ex2; // true?
Run Code Online (Sandbox Code Playgroud)

.net asp.net-mvc

5
推荐指数
1
解决办法
2万
查看次数

标签 统计

.net ×1

asp.net-mvc ×1

async-await ×1

c# ×1