我的 ASP.NET Core Web API 项目中有操作方法 调用外部 C# dll 中的函数。 这些函数对我传递给它们的数据进行计算并将输出返回给我。 我如何异步执行我的操作函数? 还有必要这样做吗?
[HttpPost]
public IActionResult SetClac([FromBody] CalcRequest calcRequest)
{
try
{
IClacSdk clacSdk = new CalcSdk();
ClacResult clacResult = clacSdk.clac(calcRequest.id , calcRequest.username)
CustomeResponse customeResponse = new CustomeResponse()
{
ErrorDescription = clacResult.ErrorDescription,
ErrorNum = clacResult.ErrorNum,
ClacResult = clacResult.Result
};
return Ok(customeResponse);
}
catch (Exception exc)
{
return StatusCode(500, (GetErrorFormat(exc)));
}
}
我如何异步执行我的操作函数?
您可以将它们包装在
Task.Run
中(尽管它不会使操作“真正”异步)。即:
ClacResult clacResult = await Task.Run(() => clacSdk.clac(calcRequest.id , calcRequest.username));
还有必要这样做吗?
不。更重要的是,在一般情况下,在 ASP.NET Core 的上下文中,建议不要这样做,因为它会对服务器吞吐量产生负面影响(尽管如果您想要并行执行多个计算,并且单独的响应时间是您的优先事项)可以杠杆
Task.Run
)。
如果您想深入挖掘,可以从多种资源开始: