Конференция "Базы" » асинхронное выполнение ADOStoredProc [D7, MSSQL]
 
  • i (01.07.08 10:45) [0]
    не могу сделать асинхронный ExecProc ([eoAsyncExecute]), т.к. надо освободить объект TADOStoredProc, а где это сделать - непонятно (знаю про OnFetchComplete но освобождать объект из его же события низя..).

    можете помочь примером, как это правильно делается?
    (мне результат работы ADOStoredProc не нужен. только вызов.)
  • Ega23 © (01.07.08 10:51) [1]
    Запусти отдельный поток и в нём через ADOCommand сделай свой Exec.
    По завершении - убейсо.
  • sniknik © (01.07.08 11:09) [2]
    > но освобождать объект из его же события низя..).
    зато можно послать событие на уничтожение себя в основной поток например.

    > мне результат работы ADOStoredProc не нужен. только вызов.
    как же эти эти кривые компоненты логику ADO портят...
    не нужен результат? не нужен компонент? (удаляется по завершению) тогда нафига тебе он вообще? просто выполни запрос от коннекта, он тебе сам и ADOCommadn создаст и "убьет" его по завершению.
  • i (01.07.08 11:46) [3]
    для проверки написали следующий код:
    FConnection.Execute(Format('EXEC PROCEDURE ProcedureName, cmdText, [eoAsyncExecute]);
    FConnection.Execute(Format('EXEC PROCEDURE ProcedureName, cmdText, [eoAsyncExecute]);

    имеем то же исключение: "Не удается выполнить операцию во время асинхронного выполнения."

    хранимая процедура выполняется несколько секунд.
  • i (01.07.08 11:50) [4]
    сорри за синтаксис, имелось в виду:

    FConnection.Execute('EXEC PROCEDURE ProcedureName', cmdText, [eoAsyncExecute]);
 
Конференция "Базы" » асинхронное выполнение ADOStoredProc [D7, MSSQL]
Есть новые Нет новых   [134470   +16][b:0][p:0]