小编Qua*_*ade的帖子

在 Task.Run 中进行异步调用是不好的做法吗?

我有一个 C# 控制台应用程序,每 1 分钟处理来自 RabbitMQ 的大约 100,000 条 JSON 消息

从 RabbitMQ 获取每条/一堆消息后,我然后调用

 await Task.Run(async () =>
 {
    //do lots of CPU stuff here, including 2 external API calls using await async call
 }
Run Code Online (Sandbox Code Playgroud)

我读过的所有内容都说使用awaitTask.Run进行CPU 密集型操作。并用于await asyncHTTP外部调用。

如果我把它改成:

await Task.Run(() =>
Run Code Online (Sandbox Code Playgroud)

然后它会抱怨,因为我async在下面的行中有一个 API 调用,所以它需要语句async中的关键字Task.Run

本节大约有 2000 多行代码(复杂的 if then 业务规则),有时不需要 API 调用。

因此,我面临着要么对应用程序进行大规模重组,需要进行大量测试,要么如果可以在 CPU 绑定操作的同时进行 API 调用,那么我将保持原样。

总而言之,这是不好的做法,还是可以在同一任务中进行 CPU 密集型工作和 API 调用?该任务正在处理一条 JSON 消息。

c# task async-await .net-core

1
推荐指数
1
解决办法
1260
查看次数

标签 统计

.net-core ×1

async-await ×1

c# ×1

task ×1