我是异步编程的新手,并不是100%理解实现。 因此,我无法找到解决问题的方法,我认为这很简单。
在运行一些昂贵的任务之前,我需要返回一个HttpResponseMessage。
问题是,如果我运行下面代码中显示的程序,return new HttpResponseMessage(HttpStatusCode.OK);
将在GetAsyncCompanySettingsByGroup
之后执行。
那么我怎样才能首先返回HttpResponseMessage然后执行异步任务呢?
public class EventController : ApiController
{
public readonly ICompanyApiSettingsService CompApiService;
public EventController(ICompanyApiSettingsService _CompApiService)
{
CompApiService = _CompApiService;
}
public async Task<HttpResponseMessage> Post([FromBody]JObject tlAction, int group)
{
var TlAction = tlAction.ToObject<TeamLeaderAction>();
TlAction.api_group = group;
//return BadRequest if values are missing
if(group == null || string.IsNullOrEmpty(TlAction.object_type) || string.IsNullOrEmpty(TlAction.event_type))
return new HttpResponseMessage(HttpStatusCode.BadRequest);
await Task.Run(() => CompApiService.GetAsyncCompanySettingsByGroup(TlAction.api_group));
return new HttpResponseMessage(HttpStatusCode.OK);
}
}
最初我没有使用Async Post,等待。 虽然有效,但我的CompApiService已经处理好了。