System.data.sqlclient to microsoft.data.sqlclient: endexecutereader ошибка/ошибкаC#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Anonymous
 System.data.sqlclient to microsoft.data.sqlclient: endexecutereader ошибка/ошибка

Сообщение Anonymous »

Я пытаюсь перенести древнее приложение в гораздо более новую версию .net и сталкиваться с чем -то странным; Асинхронные запросы больше не работают в своей библиотеке SQL (в основном, это обертка вокруг sqlClient < /code>): < /p>

system.invalidoperationexexcept Два вызова EndExeCuterEader и в обоих случаях его называют в функции обратного вызова, передаваемом методу betinexeCuterEader , например, так:

Код: Выделить всё

Dim Callback As New AsyncCallback(AddressOf EndExecuteAsync)
'(...)
Query.AsyncResult = Command.BeginExecuteReader(Callback, New Object() {Command, Query, CallbackDelegate, CallbackParameters})
'(...)
Return Query.AsyncResult
Как указано, я затем использую это возвращаемое значение позже (ожидая, пока оно не будет заполнено результатом запроса), чтобы
Функция EndExeCuteasync затем вызовет endexecutereader .
Public Sub EndExecuteAsync(ByVal ar As IAsyncResult)
'(...)
If Query IsNot Nothing Then
Try
Select Case Query.QueryType
Case MyQueryType.Normal
Using dr As SqlDataReader = Command.EndExecuteReader(ar)
'(...)
Case MyQueryType.Scalar
Using dr As SqlDataReader = Command.EndExecuteReader(ar)


Два вызова не могут быть названы, поскольку они в операторе Switch. версия? Поиск в Интернете здесь ничего не приводит к использованию; Нет результатов. < /p>
Они должны быть обратно совместимыми (но нет, уже не решены два вопроса, в которых устаревший парамет, который ничего не делал, и SSL должен был быть отключен). < /p>
Соответствующая страница MSDN: < /p>
p>sstem.data: https://learn.microsoft.com/en-us/dotne ... r?view=net -9 https://learn.microsoft.com/en-us/dotne ... net-9.0-pp
>
далеко: < /p>
Я выглядел несколько глубже, загружая и установив символы и настройку более продвинутой отладки, и обнаружил, что следующий (кажется, C#) код-это то, где он идет не так: < /p>
< /p>

Специально для меня: < /p>
cachedAsyncState.EndMethodName = null
< /code>
, когда это не должно быть; Это должно быть EndExeCuteAsync [/code] или что -то, что указывает на этот метод в моем собственном коде, хотя некоторые запутанные средства, но, конечно, не неопределенные/нулевые.
Как/почему все еще является открытым вопросом. Что если это вещь Global , и можно выполнить только один запрос на подключение/сеанс? Конечно, кажется, что комментарии для команды BetinexeCutereader указывают как таковые: < /p>

Код: Выделить всё

// Remarks:
//     The Microsoft.Data.SqlClient.SqlCommand.BeginExecuteReader method starts the
//     process of asynchronously executing a Transact-SQL statement or stored procedure
//     that returns rows, so that other tasks can run concurrently while the statement
//     is executing. When the statement has completed, developers must call the Microsoft.Data.SqlClient.SqlCommand.EndExecuteReader
//     method to finish the operation and retrieve the Microsoft.Data.SqlClient.SqlDataReader
//     returned by the command.  The Microsoft.Data.SqlClient.SqlCommand.BeginExecuteReader
//     method returns immediately, but until the code executes the corresponding Microsoft.Data.SqlClient.SqlCommand.EndExecuteReader
//     method call, it must not execute any other calls that start a synchronous or
//     asynchronous execution against the same Microsoft.Data.SqlClient.SqlCommand object.
//     Calling the Microsoft.Data.SqlClient.SqlCommand.EndExecuteReader before the command's
//     execution is completed causes the Microsoft.Data.SqlClient.SqlCommand object
//     to block until the execution is finished.
< /code>
намного выше стека, я делаю что -то похожее на: < /p>
    Dim qryResource As myQuery = loadResourceTable()
Dim qryMachine As myQuery = loadMachineTable()
' (etc.)

finishLoadingTable(dtResource, qryResource, "Resource")
finishLoadingTable(dtMachine, qryMachine, "Machine")
' (etc.)
Где каждая из таблицы загрузки {x} вызовет асинхрологический запрос, а Finishoadingtable ждал, пока он не закончил; Думая, что это будет выполнять несколько запросов на одном соединении и ожидание, пока все они не закончу. Насколько я знаю, не было никаких проблем с призыванием к нескольким асинхронным запросам подряд и ожиданием всех из них.

Код: Выделить всё

    Dim qryResource As myQuery = loadResourceTable()
finishLoadingTable(dtResource, qryResource, "Resource")
Dim qryMachine As myQuery = loadMachineTable()
finishLoadingTable(dtMachine, qryMachine, "Machine")
' (etc.)
< /code>
i.e. Если я подожду, пока команда не завершена, приведем к вызову endexecutereader 
в функции обратного вызова, то запустив каждый запрос, как это означает, что только один запрос выполняется за раз. 'Endexecutereader' не может быть вызван более одного раза для одного и того же выполнения. '

Так что пока я списываю способность использовать асинхронные запросы SQL в качестве сломанного до дальнейшего объяснения, чтобы сделать, как разъясняется.>

Подробнее здесь: https://stackoverflow.com/questions/795 ... -error-bug
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • System.data.sqlclient to microsoft.data.sqlclient: endexecutereader ошибка/ошибка
    Anonymous » » в форуме C#
    0 Ответы
    14 Просмотры
    Последнее сообщение Anonymous
  • Преобразование приложения для использования Microsoft.Data.SqlClient в Entity Framework вместо System.Data.SqlClient
    Anonymous » » в форуме C#
    0 Ответы
    38 Просмотры
    Последнее сообщение Anonymous
  • System.data.sqlclient против microsoft.data.sqlclient
    Anonymous » » в форуме C#
    0 Ответы
    27 Просмотры
    Последнее сообщение Anonymous
  • TypeLoadexception Обновление от system.data.sqlclient до microsoft.data.sqlclient
    Anonymous » » в форуме C#
    0 Ответы
    4 Просмотры
    Последнее сообщение Anonymous
  • TypeLoadexception Обновление от system.data.sqlclient до microsoft.data.sqlclient
    Anonymous » » в форуме C#
    0 Ответы
    6 Просмотры
    Последнее сообщение Anonymous

Вернуться в «C#»