在C#中同步通话

时间:2018-07-13 10:33:45

标签: c# synchronous

我在c#中具有“跟随API调用”,我想使其成为“同步”,它应该等到它从执行删除逻辑的其他模块中返回。

2 个答案:

答案 0 :(得分:0)

我相信以下代码是您的问题:CallExternalServiceAsync(..)

它应该返回一个任务,如果您声明函数异步,则可以等待。否则,如果您只想等待,则可以调用CallExternalServiceAsync(...)。Wait(),假设它返回了Task。

答案 1 :(得分:0)

如评论中所述,您可以返回一个Task而不是一个void,并在等待时执行CallExternalServiceAsync方法的调用,并假设它是可等待的。

public async Task CallDeleteOrderApi()
{
    var responseMsg = await CallExternalServiceAsync(_apiPath, _validatePath, requestHeader);
}

看看this question,它解释了如何以及为什么使用async Task

基本上,只需指定async void在事件上时在方法声明上返回即可(例如WinForms上的frm_Load)。在自定义方法上,如果只返回async Task(实际上是返回void),则始终将其声明为Task;例如,如果要返回async Task<int>,则始终将其声明为int返回df.dropDuplicates()