在操作之前返回HttpResponseMessage而不处理Service

时间:2017-07-25 13:32:50

标签: c# async-await

我是异步编程的新手,并不是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已经处理好了。

0 个答案:

没有答案