Фоновый режим работы программы

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
alviga
Начинающий
Начинающий
 
Сообщения: 4
Зарегистрирован: 25.08.2003 (Пн) 10:52

Фоновый режим работы программы

Сообщение alviga » 25.08.2003 (Пн) 10:56

Есть процедуру подключения к удаленному SQL серверу, которая просто вешает приложение на несколько минут. Возможно ли ее выполнить в фоновом режиме.

FaKk2
El rebelde gurú
El rebelde gurú
Аватара пользователя
 
Сообщения: 2031
Зарегистрирован: 09.03.2003 (Вс) 22:10
Откуда: Los Angeles

Re: Фоновый режим работы программы

Сообщение FaKk2 » 25.08.2003 (Пн) 11:06

alviga писал(а):Есть процедуру подключения к удаленному SQL серверу, которая просто вешает приложение на несколько минут. Возможно ли ее выполнить в фоновом режиме.


DoEvents пробовали? :roll:
Для получения ответа надо продемонстрировать качества, позволяющие стать компетентным — внимательность, вдумчивость, наблюдательность, желание активно участвовать в выработке решения.

alviga
Начинающий
Начинающий
 
Сообщения: 4
Зарегистрирован: 25.08.2003 (Пн) 10:52

Сообщение alviga » 25.08.2003 (Пн) 11:15

А примерчик можно ?

alviga
Начинающий
Начинающий
 
Сообщения: 4
Зарегистрирован: 25.08.2003 (Пн) 10:52

Сообщение alviga » 25.08.2003 (Пн) 11:22

Например, чтобы запускалась другая форма в которой можно было бы производить какие-то действия, а когда соединение установлено, то переключиться на форму 1 обратно.
Если можно то приведите пожалуйста пример.

FaKk2
El rebelde gurú
El rebelde gurú
Аватара пользователя
 
Сообщения: 2031
Зарегистрирован: 09.03.2003 (Вс) 22:10
Откуда: Los Angeles

Сообщение FaKk2 » 25.08.2003 (Пн) 11:26

alviga писал(а):А примерчик можно ?

Хмм....
Вот, м том месте где у тебя стоит вызов процедуры, поставь DoEvents
Для получения ответа надо продемонстрировать качества, позволяющие стать компетентным — внимательность, вдумчивость, наблюдательность, желание активно участвовать в выработке решения.

alviga
Начинающий
Начинающий
 
Сообщения: 4
Зарегистрирован: 25.08.2003 (Пн) 10:52

Сообщение alviga » 25.08.2003 (Пн) 11:36

Да но странное дело, что doevent не помогает, все равно приложение виснет. :-(
В Дельфи есть функци Application.ProcessMessage
что можно придумать в VB

FaKk2
El rebelde gurú
El rebelde gurú
Аватара пользователя
 
Сообщения: 2031
Зарегистрирован: 09.03.2003 (Вс) 22:10
Откуда: Los Angeles

Сообщение FaKk2 » 25.08.2003 (Пн) 11:55

alviga писал(а):Да но странное дело, что doevent не помогает, все равно приложение виснет. :-(
В Дельфи есть функци Application.ProcessMessage
что можно придумать в VB


DoEvents
хотя это возможно была опечатка.
Если, да, то я не знаю чем помочь. Подожди, кто нибудь обязательно ответит
Для получения ответа надо продемонстрировать качества, позволяющие стать компетентным — внимательность, вдумчивость, наблюдательность, желание активно участвовать в выработке решения.

Георгий
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 126
Зарегистрирован: 08.08.2003 (Пт) 15:08
Откуда: Россия

Сообщение Георгий » 25.08.2003 (Пн) 13:46

Сдается мне, господа, вы несколько не верно трактуете DoEvents и Application.ProcessMessage. :roll:

Они останавливают выполнение вашей программы и дают системе обработать сообщения. Однако если имеет место вызов типа SomeRecordSet.ExecSQL или что-то в этом духе, то DOEvents тут не поможет. Это один вызов и Вы не можете вставить ему в середину DoEvents.

Но выход есть: Сама по себе выборка из удаленной базы данных - это отправка запроса и получение ответа по протоколу сервера. Берешь чистый TCP сокет и реализуешь на нем протокол сервера - дальше все просто. Выборка поделилась на две части - запрос - ответ.
Между ними делай что хочешь. 8)

Но стоит ли игра свеч? Покажи табличку типа: "Работаем..." до запроса и убери ее после - все дела :idea: [/b]
Origin - это что?

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 25.08.2003 (Пн) 14:06

Если делается выборка, то можно в методе Execute указать, что запрос асинхронный. Тогда ничего зависать не будет. Делается примерно так:
Код: Выделить всё
...
Public WithEvents MyCnn As ADODB.Connection
...
Private Sub MyCnn_ExecuteComplete(ByVal RecordsAffected As Long, ByVal pError As ADODB.Error, adStatus As ADODB.EventStatusEnum, ByVal pCommand As ADODB.Command, ByVal pRecordset As ADODB.Recordset, ByVal pConnection As ADODB.Connection)
MsgBox "Выборка сделана"
End Sub
...

Но насколько я понял вопрос, тебе нужно асинхронное подключение к серверу, а как это сделать, я не знаю. Правда у объекта Connection есть событие WillConnected, попробуй поэкспериментировать.
Lasciate ogni speranza, voi ch'entrate.

Георгий
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 126
Зарегистрирован: 08.08.2003 (Пт) 15:08
Откуда: Россия

Сообщение Георгий » 25.08.2003 (Пн) 16:19

Не пойму, где тут указание, что вызов асинхронный :shock:
Origin - это что?

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 26.08.2003 (Вт) 10:18

Код: Выделить всё
MyCnn.Execute "select * from mytable", , adAsyncExecute

Эта команда запустит асинхронный запрос. Когда он отработает, будет вызвано событие MyCnn_ExecuteComplete
Lasciate ogni speranza, voi ch'entrate.


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 2

    TopList