在Webrequest已经响应的情况下启动异步功能的正确方法

时间:2018-07-19 09:15:31

标签: c# asp.net asp.net-mvc

我进行了一个需要更快响应的Web服务调用,因此我想在实际开始处理数据之前返回一个响应。这是我的代码:

[Authorize]
public async Task<ActionResult> Webcall(string Command, string Params)
{
    // Run commands
    switch (Command)
    {
        case "FormulierAchterlaten":
            // initialise the helper
            Formulier_Helper helper = new Formulier_Helper()
            {
                db = db,
                XMLData = Params
            };

            // !!!!!!!!!!! THESE CALLS NEED TO ME THE OTHER WAY AROUND !!!!!!!!!!!

            // run the process
            await helper.FormulierAchterlaten();

            // return that the message has been received ok
            return Content("OK");

            // !!!!!!!!!!! THESE CALLS NEED TO ME THE OTHER WAY AROUND !!!!!!!!!!!

            // So what I want is:
            // return Content("OK");
            // Then:
            // await helper.FormulierAchterlaten();
    }

    // Return we didn't find the command
    return Content("Error: Command not found");
}

一旦我到达“ helper.FormulierAchterlaten();”,我已经知道连接是有效的,因此我希望它返回“确定”,然后开始“ helper.FormulierAchterlaten();”。呼叫。

我知道我可以通过删除“等待”来实现这一点,但是在我看来这不是正确的方法,因为编译器在执行此操作时会立即警告我。那么创建线程的正常方法是什么?

很抱歉,如果看起来很怪异,我自己找不到该基本信息,但是由于某些原因,MSDN文章对我来说真的很难理解。

0 个答案:

没有答案