执行实际的异步后台操作

问题描述 投票:0回答:1

我有一个 .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,因为线程可以在恢复之前启动创建的“缓存任务” “主流程任务”。 应该采取什么解决方案来

保证

不会对用户造成影响(请求延迟影响)?

c# asp.net-core asynchronous .net-core async-await
1个回答
0
投票
是错误的目标;相反,考虑保证缓存

不会中断流程,并且除此之外,我们不在乎——它可以并行或之后发生。否则我们需要处理当前事情的完成,这看起来很麻烦。 对于这个

,我们有简单的选择:

_ = Task.Run(() => CacheDataAsync(data));


© www.soinside.com 2019 - 2024. All rights reserved.