我必须调用restsharp ExecuteTaskAsync,我在执行API时使用了await
并等待完成所有任务,因为它在循环中运行,一旦命中await System.Threading.Tasks.Task.WhenAll(tasksList)
,就没有被阻止,其中没有任何响应。
呼叫异步代码:
Task<IEnumerable<AsyncResponse>> responseList = AddPAsync(id, id1);
要执行Restsharp的ExecuteTaskAsync:
public static async Task<AsyncResponse> ExecuteApiAsync(RestRequest request, string url, dynamic identifier)
{
var restClient = new RestClient(url);
var cancellationTokenSource = new CancellationTokenSource();
var restResponse = await restClient.ExecuteTaskAsync(request);
return new AsyncResponse{ RestResponse = restResponse, Identifier = identifier };
}
准备请求并调用RestSharp的ExecuteTaskAsync:
private async Task<IEnumerable<AsyncResponse>> AddPAsync(List<Participant> participantInfo, string registrationId)
{
foreach (var p in pinfo)
{
try
{
var request = new RestRequest(Constants.API_VERSION + Uri, Method.POST);
request.AddHeader("Authorization", string.Format("Bearer {0}", accessToken));
request.AddParameter(Constants.APP_JSON, JsonConvert.SerializeObject(p), ParameterType.RequestBody);
var response = Util.ExecuteApiAsync(request, Constants.END_POINT_URL_NAME, p.Identifier);
tasksList.Add(response);
}
catch (Exception ex)
{
}
}
await System.Threading.Tasks.Task.WhenAll(tasksList);
}
当它达到await Task.WhenAll
时没有响应。
我已经尝试过了:
`ConfigureAwait(false)-它不起作用。
这是Sitecore中的ASP.Net MVC应用程序。
答案 0 :(得分:0)
从Nito.AsyncEx添加AsyncContext成功。