【发布时间】:2025-12-25 09:20:07
【问题描述】:
我必须调用一个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应用程序。
【问题讨论】:
-
@Dumisani 那个会阻止,而
await Task.WhenAll()不会阻止 -
好吧,你没有
await在那个Task<IEnumerable<AsyncResponse>> responseList = AddPAsync(id, id1);,是吗。你后来也awaitresponseList吗? -
您的调用堆栈进一步是否有阻塞调用?
-
@AbhishekJain 差不多。然后,您如何获得从非异步方法调用的异步
AddPAsync方法的结果? usingresponseList.Result?
标签: asp.net-mvc async-await sitecore restsharp multitasking