0

我正在尝试实现 fire and forget async 方法,以记录用于审计目的。

我正在关注这个例子Async throw-away fire-and-forget with C#.NET

   public async Task MessageAsync(string message, DateTime date)
   {
      _logger.Info($"At {DateTime.UtcNow.ToString("yyyy-MM-dd HH:mm:ss.fff", CultureInfo.InvariantCulture)}: {message}");
      await Task.Yield(); //NOT POSSIBLE IN .NET 4.0
   }

但是我有使用.net framework 4.0的限制,我不能使用

 await Task.Yield();

我知道这是确保该方法异步执行的唯一方法,来自Microsoft

您可以使用 await Task.Yield(); 在异步方法中强制方法异步完成。

我的问题是:在.net 4.0 中这个实现的替代方案是什么?

4

1 回答 1

0

根据@Evk 消息,我尝试过这个:

Task MessageAsync(string message, DateTime date, CancellationToken token)
{
   var messageToLog =$"At {date.ToString("yyyy-MM-dd HH:mm:ss.fff", CultureInfo.InvariantCulture)}: {message}";
   Task.Factory.StartNew(() => _logger.Info(messageToLog), token);
}
于 2018-02-19T08:02:37.327 回答