c#fire和忘记异步方法:在.net 4中实现yield()

时间:2018-02-16 10:47:17

标签: c# asynchronous task yield fire-and-forget

我正在尝试实施一个火,忘记异步方法,以便进行审计。

我正在关注此示例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中这个实现的替代方法是什么?

1 个答案:

答案 0 :(得分: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);
}