我遇到了将某些代码转换为异步或并行工作的问题。我正在运行异步链(async / await等待调用堆栈),导致我的API需要将Task返回到另一个.NET 4.0应用程序。
.NET 4.0无法实现等待,因此它强制API.Result在API端,否定了性能改进。
在我的API中,我有一些调用另一个API(发送通知),我不希望在将控制权返回给我的API调用者之前等待(当第三方api挂起时性能降低)。我确实关心调用第三方API进行日志记录的结果。
使用Task.Run以并行方式运行这些调用显示了UI响应的巨大差异,但我担心这会产生的线程数量以及在这种情况下超时问题可能使我的整个池死机。
如何在C#.NET 4.5中正确处理这种情况?
我是否可以将所有第三方API调用从单个上下文发送到线程进行处理,而不是在每个上调用task.run?
答案 0 :(得分:0)
您可以实施队列来分派通知。当您需要发送通知时,您的API只会将通知添加到队列中并将其忘记。
然后,您可以实现后台任务来处理队列。您可以将此后台任务配置为在需要时使用多个线程。