Hi,
I have Web API method (in .net Core), under which I am calling a long running method, but control is coming back to Parent method, only after executing the logic of Long Running method.
Below is my code.
[HttpPost]
[Authorize(AuthenticationSchemes = Microsoft.AspNetCore.Authentication.JwtBearer.JwtBearerDefaults.AuthenticationScheme)]
public async Task<IActionResult> Post([FromBody] Master oMaster)
{
    try
    {
        if (ModelState.IsValid)
        {
             case MasterHelper.Tables.JobFunctionTeamLink:
                        var oJobFunctionTeamLink = Common.GetConversionJsonObject<JobFunctionTeamLink>(oMaster.Data.ToString());
                        var _oJobFunctionTeamLinkObject = Common.GetConvertionObjectByType<JobFunctionTeamLink>(oJobFunctionTeamLink);
                        if (Validator.TryValidateObject(_oJobFunctionTeamLinkObject, new ValidationContext(_oJobFunctionTeamLinkObject), validationresults, true))
                        {
                            var data = new JobFunctionTeamLink();
                            var missingattributs = Common.GetPropertiesNameOfClass(data, oJobFunctionTeamLink);
                            if (missingattributs != null && missingattributs.Count > 0)
                            {
                                return StatusCode(StatusCodes.Status400BadRequest, Common.ResponseFailure(oMaster.RequestId.ToString(), string.Join(",", missingattributs)));
                            }
                            var _UserJobFunctionTeamList = Common.GetPropertiesNameOfClassUserTeam(_oJobFunctionTeamLinkObject);
                            message = _masterDAL.SaveJobFunctionTeamLinkDetails(_UserJobFunctionTeamList, oMaster.RequestId);
                           string savemsg= await _masterDAL.SaveProjectUserSecurity(_UserJobFunctionTeamList[0].JobFunctionGUID, oMaster.RequestId);
                            return string.IsNullOrEmpty(message)
                            ? StatusCode(StatusCodes.Status200OK, Common.ResponseSucess(oMaster.RequestId.ToString()))
                            : StatusCode(StatusCodes.Status400BadRequest, Common.ResponseFailure(oMaster.RequestId.ToString(), message));
                        }
                    }
                } 
            }
LongRunningTask which would take more time,is shown below.
public async Task<string> SaveProjectUserSecurity(Guid JobFunctionGuid, Guid reqId)
{
    try
    {
        string dbmessage=string.Empty;
        await Task.Run(() =>
        {
            var sql = new SqlHelper(ConnectionString);
            sql.ExecuteNonQuery("sp_CRM_SaveProjectUserSecurity", "@reqId", "@JobFunctionGUID", reqId, JobFunctionGuid, out dbmessage, CommandType.StoredProcedure, "@strComments");
 
        }).ConfigureAwait(true);
        return dbmessage;
    }
    catch (Exception ex)
    {
        throw;
    }
}
Kindly note, control is coming back to parent method only after executing the method "SaveProjectUserSecurity", I tried without ConfigureAwait, with ConfigureAwait(True) and also ConfigureAwait(false), all 3 not working as expected.
Any help or clue would be highly appreciated. Thanks