我有以下方法:
public async Task<IEnumerable<Quote>> GetQuotesAsync()
{
using var connection = new SqlConnection(_connectionString);
var allQuotes = await connection.QueryAsync<Quote>(@"SELECT [Symbol], [Bid], [Ask], [Digits] FROM [QuoteEngine].[RealtimeData]");
return allQuotes;
}
一切都很好,清晰明了,连接将在作用域结束时被处理。
但是resharper建议将其改为:
在作用域结束时处理连接
public async Task<IEnumerable<Quote>> GetQuotesAsync()
{
await using var connection = new SqlConnection(_connectionString);
var allQuotes = await connection.QueryAsync<Quote>(@"SELECT [Symbol], [Bid], [Ask], [Digits] FROM [QuoteEngine].[RealtimeData]");
return allQuotes;
}
在使用代码之前添加await,代码将成功编译。这是什么意思,我们什么时候需要这样做呢?
await using
ж—¶пјҢдҪҝз”Ёusing
дјҡжңүд»Җд№ҲеҗҺжһңпјҹ - Overlord Zurgusing
会调用Dispose()
而不是await DisposeAsync()
,因此会在当前线程中造成不必要的阻塞。这取决于对象类型,差异有多不可取。 - Klaus Gütter