В идеале да. Вы могли бы даже использовать FirstOrDefaultAsync
, пока вы работаете с ним (в зависимости от того, какой у вас базовый источник данных):
public async Task<string> DoStuff(string colorVal) {
string ourValue = await (from a in ctx.BigTable where a.color == colorVal select a.DoneFlag).FirstOrDefaultAsync();
var someColor = await GetMatchingColorAsync();
return ourValue;
}
У Microsoft есть серия статей о Асинхронном программировании с асинхронностью и ожиданием , которые довольно хорошо написаны. Они того стоят.
Если вы абсолютно не можете изменить методы вызова, тогда вы можете просто синхронно ждать:
public string DoStuff(string colorVal) {
string ourValue = (from a in ctx.BigTable where a.color == colorVal select a.DoneFlag).FirstOrDefault();
var someColor = GetMatchingColorAsync().GetAwaiter().GetResult();
return ourValue;
}
Легко, верно? За исключением того, что он блокирует поток (вы теряете преимущество асинхронных методов) и рискуете зайти в тупик, как описано в этой статье: Не блокировать асинхронный код .
Это плохо ™