C# c语言中的同步调用
我在c中有以下API调用,我想使其同步,它应该等到从执行删除逻辑的其他模块返回时再调用。我相信以下代码是您的问题:CallExternalServiceAsyncC# c语言中的同步调用,c#,synchronous,C#,Synchronous,我在c中有以下API调用,我想使其同步,它应该等到从执行删除逻辑的其他模块返回时再调用。我相信以下代码是您的问题:CallExternalServiceAsync 它应该返回一个任务,如果您将函数声明为异步,则可以等待该任务。否则,如果您只是对等待感兴趣,您可以调用CallExternalServiceAsync….Wait,假设它返回一个任务。如注释中所述,您可以返回一个任务而不是一个void,并使用Wait执行CallExternalServiceAsync方法的调用,假设它是可等待的 pu
它应该返回一个任务,如果您将函数声明为异步,则可以等待该任务。否则,如果您只是对等待感兴趣,您可以调用CallExternalServiceAsync….Wait,假设它返回一个任务。如注释中所述,您可以返回一个任务而不是一个void,并使用Wait执行CallExternalServiceAsync方法的调用,假设它是可等待的
public async Task CallDeleteOrderApi()
{
var responseMsg = await CallExternalServiceAsync(_apiPath, _validatePath, requestHeader);
}
看一看,这说明了如何以及为什么使用异步任务
基本上,只要在事件上指定异步void return on方法声明,例如WinForms上的frm_Load。在自定义方法上,如果只返回一个实际返回任务的void,则始终将其声明为async Task;如果要返回int,则始终将其声明为async Task。我没有看到任何异步代码?请问我遗漏了什么?你为什么要让它同步?这很奇怪,但请查看您的返回,因为它是async void,并且可能是async任务,当然可以将您的CallerExternalServiceAsync调用为Wait CallerExternalServiceAsyncPublic HttpResponseMessage CallerExternalServiceAsyncString APIRL、string apiPath、FormUrlEncodedContent postContent{var client=new HttpClient{BaseAddress=new UriapiUrl};client.DefaultRequestHeaders.Accept.Clear;client.DefaultRequestHeaders.Accept.Addnew MediaTypeWithQualityHeaderValueapplication/json;//实现后var响应=client.PostAsyncapiPath,postContent.Result;返回HttpResponseMessage;}我在PostSync上有上述CallExternalServiceAsync代码,但它仍然存在wait@VitthalMokhare问题是您必须在CallExternalServiceAsync clas中等待结果。