尝试使用此代码时: 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));
以后是否会工作,是否还会导致调用者超时?使它同步应该真的有效。
答案 0 :(得分:0)
是好捕获 - 你可能想让方法同步 - 因为await会使动作同步执行我们不想要的“长时间运行步骤”。
希望这是有道理的 - 如果LMK有效,我将修复我的代码:)