//adding the newly created row with data to the oDataTable
oDataTable.Rows.Add(oDataRow);
}
}
}
//close the oStreamReader object
oStreamReader.Close();
//release all the resources used by the oStreamReader object
oStreamReader.Dispose();

//Looping through all the rows in the Datatable
foreach (System.Data.DataRow oDataRow in oDataTable.Rows)

Side note

Really the best thing for you to do is to do a little reading on the async/await pattern so you are not just copy/pasting without understanding what is actually going on and why you are using it. It will also help you troubleshoot/debug possible issues later on.