Допустим, вы создали асинхронный метод, как показано ниже:
public async Task<Contact> GetContact()
{
R r = new R();
Contact contactDetails = await r.FirstOrDefaultAsync<Contact>();
Company companyDetails = await r.FirstOrDefaultAsync<Company>();
contactDetails.Company = companyDetails;
Console.WriteLine("3");
return contactDetails;
}
Это не будет выполнено, пока вы не дождетесь этого GetContact.Так, например, если мы вызываем его, используя следующий код:
Console.WriteLine("1");
Task<Contact> getContactTask = GetContact();
Console.WriteLine("2");
Contact contact = await getContactTask; // the code is now executed
Console.WriteLine("4");
Консоль покажет:
1
2
3
4
В соответствии с вашим комментарием, я думаю, это то, что вы хотите.Получить контакт и получить компанию не удастся, пока вы не вызовете await для метода GetContact.
Также, если вы хотите выполнить и получить контакт, и получить параллель компании, вы можете использовать следующее:
public async Task<Contact> GetCompanyParallel()
{
R r = new R();
Task<Contact> contactDetailsTask = r.FirstOrDefaultAsync<Contact>();
Task<Company> companyDetailsTask = r.FirstOrDefaultAsync<Company>();
await Task.WhenAll(contactDetailsTask, companyDetailsTask);
Contact contactDetails = await contactDetailsTask;
contactDetails.Company = await companyDetailsTask;
return contactDetails;
}