资源组项目错误

时间:2017-03-09 19:41:30

标签: multithreading asp.net-web-api azure-logic-apps

尝试使用此代码时: LogicAppsAsyncResponseSample 我为我的初始调用创建了这个方法:

    public async Task<dynamic> InsertRecords943(string interchangeId, [FromBody] dynamic inputjson)
    {
        Guid id = Guid.NewGuid();
        RunningTasks[id] = string.Empty;
        new Thread(() => DoInsertRecords943(id, interchangeId, inputjson)).Start();   //Start the thread of work, but continue on before it completes
        HttpResponseMessage responseMessage = Request.CreateResponse(HttpStatusCode.Accepted);
        responseMessage.Headers.Add("location", String.Format("{0}://{1}/api/status/{2}", Request.RequestUri.Scheme, Request.RequestUri.Host, id));
        responseMessage.Headers.Add("retry-after", "20");
        return responseMessage;
    }

但Code Analysis产生了这个错误:

错误CS1998此异步方法缺少'await'运算符并将同步运行。考虑使用'await'运算符等待非阻塞API调用,或'await Task.Run(...)'在后台线程上执行CPU绑定工作。

所以我想让方法同步:

public dynamic InsertRecords940(string interchangeId, [FromBody] dynamic inputjson)

或者将新的Thread行更改为:

await Task.Run(DoInsertRecords943(id, interchangeId, inputjson));

以后是否会工作,是否还会导致调用者超时?使它同步应该真的有效。

1 个答案:

答案 0 :(得分:0)

是好捕获 - 你可能想让方法同步 - 因为await会使动作同步执行我们不想要的“长时间运行步骤”。

希望这是有道理的 - 如果LMK有效,我将修复我的代码:)