ホーム>source
<前>ウィズウィズ

Oracle.ManagedDataAccessを使用してクエリを非同期に実行するにはどうすればよいですか?データベースをAWSに変更しているため、レイテンシが発生する可能性があります。

Public Function ExecuteNonQuery(ByVal cmd As OracleCommand) As Integer ' no of affected rows ... Dim affectedRows As Integer = -1 ' execute the command ... Try ' open connection ... cmd.Connection.Open() Catch ex As Exception MsgBox("Unable to establish a connection to CFR database." & ex.ToString, MsgBoxStyle.Critical) Exit Function End Try Try ' execute command ... 'affectedRows = cmd.ExecuteNonQuery() affectedRows = cmd.ExecuteNonQuery() Catch ex As OracleClient.OracleException If CInt(ex.Code) = CInt(1) Then Return -2 End If Catch ex As Exception ' rethrow error ... 'Dim cfrErr As New CFR_Errors("Data_Access_Class","ExecuteNonQuery", ex) Throw New Exception(ex.InnerException.ToString, ex) Finally cmd.Connection.Close() End Try Return affectedRows End Function
あなたの答え
  • 解決した方法 # 1

    Async を使用するようにリファクタリングできるほどシンプル  そして Await   DbConnection 以来    そして DbCommand  利用可能な非同期APIが必要です。

    <前>ウィズウィズ

    AsyncおよびAwaitを使用した非同期プログラミング(Visual Basic)

    Public Async Function ExecuteNonQueryAsync(ByVal cmd As DbCommand) As Task(Of Integer) ' no of affected rows ... Dim affectedRows As Integer = -1 ' execute the command ... Try ' open connection ... Await cmd.Connection.OpenAsync() Catch ex As Exception MsgBox("Unable to establish a connection to CFR database." & ex.ToString, MsgBoxStyle.Critical) Exit Function End Try Try ' execute command ... affectedRows = Await cmd.ExecuteNonQueryAsync() Catch ex As OracleClient.OracleException If CInt(ex.Code) = CInt(1) Then Return -2 End If Catch ex As Exception ' rethrow error ... Throw New Exception(ex.InnerException.ToString, ex) Finally cmd.Connection.Close() End Try Return affectedRows End Function

  • 前へ java - JPAクエリ:サブクエリをグループ化条件に結合する
  • 次へ jquery - 投稿タイトルの最後の単語をターゲットにする