C#中无需等待异步任务完成即可返回Ok,但需获取任务响应
问题需求
需要调用外部API的SendMessageAsync(string message)方法,要求无需等待该方法执行完成即可向客户端返回Ok(),但后端需要获取该方法的响应来继续后续流程,也就是要在后端对其执行await操作。
示例代码
try { //... var response = await SendMessageAsync("test"); //无需等待响应,直接返回Ok() //使用response执行后续操作 } catch(MyException ex) { //记录日志 } catch(Exception ex) { //记录日志 }
更新说明
我找到了一个解决方案,使用Task.Run()(即“即发即弃”模式),或许能帮助到其他人,感谢各位的解答。
解决方案1
_ = Task.Run(() => SendMessageAsync(), task => { //SendMessageAsync()执行失败时会进入此逻辑 var exception = task.InnerException.Exception; //记录异常日志 }, TaskContinuationOptions.OnlyOnFaulted)
内容的提问来源于stack exchange,提问作者jack
相关产品推荐
相关产品推荐

