请使用c#async等待不起作用的REST呼叫和数据库保存



我有案例,我将进行休息,并根据响应我将其保存到数据库中。

private async Task<bool> ProcessParallal<T>(IList<T> t,PropertyInfo pi, string name, int Id)
{
    string mainId = null,intermediateId = null;
    var tasks = t.Select(async item =>
    {
        var response = await CallRestApi(item,(long)(pi.GetValue(item)),name,id);
        //Saving Rsult based on RestAPi result
        // Requiremnt is wait until databse operation finishes
        await this.SaveToTable(response.id,name,id));
    });
    await Task.WhenAll(tasks);
    return await Task.FromResult(false);
}
private async Task<string> SaveToTable(int responseId,name,id)
{
    //Save details in Audit Table 
    _iDataAccess.AuditSave(responseId,name,id);
    return await Task.FromResult("Success");
}
public async Task<ResponseResult> CallRestApi<T>(T itemObj,id,name)
{
    //Fetching From DB
    var info = await fetchDetailsFromDB(id, name);
   //Rest Api Call
   return await CreateNewEntryByRestCall<T>(itemObj,info.name);
}

但是processparallal do do not等待直到数据库操作完成(即Savetotable方法)。程序Parallal方法在数据库操作完成之前返回。

任何人都可以指出此代码的问题。

如果我理解您在等待processparallal方法的情况下正确提问,您的异步调用

private async Task<bool> ProcessParallal<T>(IList<T> t,PropertyInfo pi, string name, int Id)

应该更改为同步呼叫:

private bool ProcessParallal<T>(IList<T> t,PropertyInfo pi, string name, int Id)

最新更新