【发布时间】:2014-07-29 09:27:08
【问题描述】:
我使用的是 ASP.NET 4.5,设置了 <httpRuntime targetFramework="4.5" />。
我有一个旧的数据助手库方法,它使用SQLDataAdapter.Fill() 返回一个 SQLDatatable。
我想添加一个方法来返回 Task(of SQLDatatable) - 与旧方法等效的异步。
我的代码如下(只包括重要的代码部分):
注意:
-
GetConnectionString()返回sql连接字符串 -
GetSqlCmd(...)返回一个 SQLCommand 对象 -
LogError()记录任何异常Using conn As New SqlConnection(GetConnectionString()) Try cmd = GetSqlCmd(strSQL, conn, hash) Await conn.OpenAsync().ConfigureAwait(False) Using datareader = Await cmd.ExecuteReaderAsync().ConfigureAwait(False) userDataTable.Load(datareader) End Using Catch ex As Exception LogError(ex) End Try End Using
一旦我将 await 添加到库方法调用中,代码就可以在 ASP.NET 应用程序中运行。
我不太确定的是上面的代码是否有意义。当然 SQLDataReader 是异步的,但 SQLDataTable.Load(datareader) 似乎没有使用 ReadAsync (据我所知)......
这一事实是否使上述代码毫无意义 - 意思是,“ExecuteReaderAsync without ReadAsync”毫无意义?
【问题讨论】:
标签: asp.net vb.net asynchronous ado.net