Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 ADO и асинхронный вызов  [new]
=Ozzy=
Member

Откуда:
Сообщений: 228
Как получить результат выполнения асинхронного вызова запроса через ADO? Кто-нибудь сталкивался?
27 фев 12, 16:27    [12158361]     Ответить | Цитировать Сообщить модератору
 Re: ADO и асинхронный вызов  [new]
Гавриленко Сергей Алексеевич
Member

Откуда:
Сообщений: 37254
Точно так же, как и не асинхронного. И вообще, оффтопик тут. Лучше спрашивать в форуме по средству разработки.
27 фев 12, 16:28    [12158380]     Ответить | Цитировать Сообщить модератору
 Re: ADO и асинхронный вызов  [new]
Glory
Member

Откуда:
Сообщений: 104751
Хм. Ждать пока запрос не завершится не пробовали ?
27 фев 12, 16:29    [12158393]     Ответить | Цитировать Сообщить модератору
 Re: ADO и асинхронный вызов  [new]
kDnZP
Member [заблокирован]

Откуда: ★[msg=16399436]★[msg=20850760]
Сообщений: 11289
=Ozzy=
Как получить результат выполнения асинхронного вызова запроса через ADO? Кто-нибудь сталкивался?

Не в ту тему написали.

* Т.е. зависит от того, в чем пишите. Получал результаты через ADO.NET, под .Net... Но не совсем понравилось получение значений с хранимок, они че-то сыпали все результаты оптом, в конце. Отдаленно помню, что эксперементировал с raiserror
27 фев 12, 16:31    [12158420]     Ответить | Цитировать Сообщить модератору
 Re: ADO и асинхронный вызов  [new]
=Ozzy=
Member

Откуда:
Сообщений: 228
Ок. спасибо. Попробую в другом месте спросить. Насколько я в курсе асинхронный на то и асинхронный что передает управление не дожидаясь результата. А вот как получить его когда вызов завершиться?
27 фев 12, 16:40    [12158524]     Ответить | Цитировать Сообщить модератору
 Re: ADO и асинхронный вызов  [new]
kDnZP
Member [заблокирован]

Откуда: ★[msg=16399436]★[msg=20850760]
Сообщений: 11289
=Ozzy=
Ок. спасибо. Попробую в другом месте спросить. Насколько я в курсе асинхронный на то и асинхронный что передает управление не дожидаясь результата. А вот как получить его когда вызов завершиться?

Было че-то типа такого (учеть только, что конекция должна поддерживать асинхронный вызов):
...
                try {
                    AsyncCallback mycallbakc = new AsyncCallback(CallBack);
                    sCmd.Connection.Open();
                    sCmd.BeginExecuteNonQuery(mycallbakc, sCmd); // .ExecuteNonQuery();
                }
                catch(InvalidOperationException) {
                    ...
                }
                catch(Exception e) {
                    // Остальные обработаем...
                    ...
                }


...

        /// <summary>
        /// // Асинхронный обратный вызов, сработает по завершению процедуры
        /// </summary>
        /// <param name="i"></param>
        private void CallBack(IAsyncResult i)
        {
            SqlCommand s=null;
            try {
                s = (SqlCommand)i.AsyncState;
                int rowCount = s.EndExecuteNonQuery(i);
                System.Diagnostics.Debug.WriteLine("CallBack End: " + rowCount.ToString());
                System.Diagnostics.Trace.Write("CallBack End: " + rowCount.ToString());
            }
            catch(Exception ex) {
                System.Diagnostics.Trace.Write("Error: "+ex.Message);
            }
            finally {
                _IsWork = false; // Теоретически тут уже все закончилось...
                if(s.Connection != null) {
                    s.Connection.Close();
                }
            }
27 фев 12, 16:48    [12158610]     Ответить | Цитировать Сообщить модератору
 Re: ADO и асинхронный вызов  [new]
=Ozzy=
Member

Откуда:
Сообщений: 228
kDnZP,

Спасибо идею понял. Вот только я работаю с C++. Тут по ходу надо больше ручками поработать. Не сталкивался поэтому не знаю куда лезть. Что-то должно быть для обратного вызова но что пока ищу.
В теме программиорвание мой вопрос будет месяц лежать. Активность там никакая и вопросы типа "Количество определенных найденных слов в массиве char" склоняют в к тому что не так много там специалистов.
27 фев 12, 16:54    [12158690]     Ответить | Цитировать Сообщить модератору
 Re: ADO и асинхронный вызов  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31980
=Ozzy=
А вот как получить его когда вызов завершиться?
Думаю, придёт событие ExecuteComplete Event

Но действительно лучьше спрашивать в специализированном форуме.
27 фев 12, 16:56    [12158708]     Ответить | Цитировать Сообщить модератору
 Re: ADO и асинхронный вызов  [new]
=Ozzy=
Member

Откуда:
Сообщений: 228
alexeyvg,

Все нашел. Спасибо. ConnectionEvents называется. Работать через Advise и Unadvise используя connection point. Делается не сложно но ну его ... .
27 фев 12, 17:03    [12158799]     Ответить | Цитировать Сообщить модератору
 Re: ADO и асинхронный вызов  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31980
=Ozzy=
alexeyvg,

Все нашел. Спасибо. ConnectionEvents называется. Работать через Advise и Unadvise используя connection point. Делается не сложно но ну его ... .

=Ozzy=
Вот только я работаю с C++.
В MSDN есть пример: ADO Events Model Example (VC++)

ms-help://MS.VSCC.v90/MS.MSDNQTR.v90.en/ado/html/29530153-b963-4a7c-8665-2335f1d604a8.htm

Просто скопируйте в свой код :-)
27 фев 12, 17:32    [12159140]     Ответить | Цитировать Сообщить модератору
 Re: ADO и асинхронный вызов  [new]
=Ozzy=
Member

Откуда:
Сообщений: 228
alexeyvg
=Ozzy=
alexeyvg,

Все нашел. Спасибо. ConnectionEvents называется. Работать через Advise и Unadvise используя connection point. Делается не сложно но ну его ... .

=Ozzy=
Вот только я работаю с C++.
В MSDN есть пример: ADO Events Model Example (VC++)

ms-help://MS.VSCC.v90/MS.MSDNQTR.v90.en/ado/html/29530153-b963-4a7c-8665-2335f1d604a8.htm

Просто скопируйте в свой код :-)


Спасибо. Я уже видел ссылку. Я достаточно в свое время поработал с COM и connection point и знаю какие могут быть последствия от использования всего этого. Уж очень не надежная эта штука. Вполне вероятна ситуация ображения по неверному адресу при срабатывании события и тогда пи.... Лучше постараюсь избежать использования и придумать что-нибудь по проще для решения задачи.
27 фев 12, 17:38    [12159200]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить