簡體   English   中英

c#觸發並忘記異步方法:在.net 4中實現yield()

[英]c# fire and forget async method: implement yield() in .net 4

我正在嘗試實現一種即發即棄的異步方法,以便出於審核目的進行記錄。

我正在使用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中此實現的替代方法是什么?

基於@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);
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM