c# - 从 Async 调用 void sync 方法 - 无法等待 void

标签 c# asynchronous asp.net-web-api2

我正在为 WebApi 实现 ExceptionLogger,异常记录到数据库中。

 public class CustomExceptionLogger : ExceptionLogger
{
    public override async Task LogAsync(ExceptionLoggerContext context, CancellationToken cancellationToken)
    {
       var log = new Logger();
       await log.LogMessage(context.Exception); --Cannot await 'void' complie time error here
    }
}

public class Logger
{
   public void LogMessage(Exception ex)
   {
     //code to insert message into db
   }
}

如何解决这个问题?

最佳答案

如果您真的希望 LogMessage() 是异步的和可等待的,您需要将代码更改为如下所示:

public class Logger
{
   public async Task LogMessage(Exception ex)
   {
     //code to insert message into db
   }
}

要使它有用,您的数据库插入代码也应该是异步的。

关于c# - 从 Async 调用 void sync 方法 - 无法等待 void,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37328976/

相关文章:

C# Fire and Forget 任务并丢弃

javascript - 使两个ajax请求异步运行

asynchronous - 在蓝牙连接事件中发送消息时不接收 AppMessage 回调

c# - 如何使用注释覆盖同一方法上的 Web api 路由

c# - ASP.NET MVC 传递多个模型以从 Controller 查看

c# - 类型存储在变量中的类型约束

json - 使用 JSON 的 WebAPI2.0 OWIN token 请求

c# - 使用 Owin Startup 类中的 OnMessage 订阅 Azure 服务总线

c# - 执行 *.reg 文件

javascript - 如何通过 onMouseMove 防止对象移动时的跳跃?