业务场景
当前异步方式是API接口,会有大量数据和并发,在接收到请求使用Task.Run进行异步处理,并且要即时返回结果,如果在Task.Run前面加Await会等到方法执行完才能返回。如果不加Await就会造成线程阻塞
问题相关代码
public async Task<IReturnModel> TaskRunAsync(CoilingOutParam outParam)
{
_ = Task.Run(async () =>
{
//需要异步执行,不等待结果,后台执行,会造成线程阻塞
var rst = await ExecuteCoilingMoveTrackOut(outParam);
});
//直接返回需要的结果
return await Task.FromResult(ReturnModel.Successful());
}
以上会直接返回,执行时间0秒,是需要的效果,但是在后台执行ExecuteCoilingMoveTrackOut方式,会造成线程阻塞,如:第一次执行完ExecuteCoilingMoveTrackOut是1秒,第二次ExecuteCoilingMoveTrackOut就需要2秒,以此类推
我想要达到的结果
如何能达到即时返回结果,ExecuteCoilingMoveTrackOut方法在后台去执行,并且不会线程阻塞?