从异步调用void sync方法 - 无法等待void

时间:2016-05-19 16:22:50

标签: 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
   }
}

如何解决这个问题?

1 个答案:

答案 0 :(得分:4)

如果你真的希望LogMessage()是异步和等待的,你需要改变你的代码看起来像这样:

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

对于任何用途,您的数据库插入代码也应该是异步的。