我有一个 .NET Core 服务,在我的流程中,我想保证在流程结束后会缓存所获取的数据。
即它根本不会影响请求延迟
public async Task<Result> GetAndCacheAsync()
{
var data = await GetFromDbAsync();
_ = CacheDataAsync(data); // I want to **guarantee** this happens only after the method completes
var results = await ProcessData(data);
return results;
}
我试图找到这个问题的解决方案,但似乎都使用了异步等待任务机制,这并不能保证它AFAIU,因为线程可以在恢复之前启动创建的“缓存任务” “主流程任务”。 应该采取什么解决方案来
保证不会对用户造成影响(请求延迟影响)?
不会中断流程,并且除此之外,我们不在乎——它可以并行或之后发生。否则我们需要处理当前事情的完成,这看起来很麻烦。 对于这个
,我们有简单的选择:
_ = Task.Run(() => CacheDataAsync(data));