У меня вопрос по поводу асинхронных методов, возврата и использования операторов, на которые я не смог найти ответ.
Наличие следующих двух блоков кода. Будут ли оба вести себя одинаково? Есть ли риск при использовании Варианта 1?
Вариант 1:
public async Task<IEnumerable<Devices>> GetPreviousDevicesAsync(string token)
{
IEnumerable<Devices> devices;
using (var connection = _dbConnectionFactory.CreateConnection())
{
devices = await connection.FindAsync<Devices>(statement => statement
.Where($"{nameof(Devices.Token)} = '{token}');
}
return devices;
}
Вариант 2:
public async Task<IEnumerable<Devices>> GetPreviousDevicesAsync(string token)
{
IEnumerable<Devices> devices;
using (var connection = _dbConnectionFactory.CreateConnection())
{
devices = await connection.FindAsync<Devices>(statement => statement
.Where($"{nameof(Devices.Token)} = '{token}');
return devices;
}
}
Мне было интересно, будет ли каким-либо образом блок кода варианта 1 сохранять соединение открытым, поскольку задача будет выполнена после того, как блок использования был оставлен.
Надеюсь, вы можете помочь с этим.
Спасибо!