Allora metti nel form un timer e setta la proprietà Interval a 100.
L' istruzione cmdAS400Lib.Execute la metti in una sub che chiami
DoQuery. Dichiara blResp come boolean. Dichiara l'api Sleep
Il meccanismo è questo :codice:Dim blResp As Boolean Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long) Public Sub DoQuery() blResp = False cn.Execute blResp = True End Sub Private Sub Timer1_Timer() Timer1.Enabled = False DoQuery End Sub Private Sub Command1_Click() Dim TimeCount As Long TimeCount = 0 Timer1.Enabled = True Do While True DoEvents Sleep 500 Time Count = TimeCount + 500 If TimeCount > 5000 Then Exit Do If blResp Then Exit Do Loop If blResp Then ' Fai qualcosa con il risultato della query Else ' Stoppi la connessione Set cn = Nothing ' Dai la segnalazione di errore MsgBox "Errore di Time Out ......." End If End Sub
1) Al click sul bottone, parte il Timer
2) Subito dopo la tua applicazione entra nel ciclo Do while
3) Dopo un decimo di secondo il Timer si stoppa e lancia DoQuery
che in questo modo è asincrona al ciclo.
4) Intanto il ciclo conta i millisecondi grazie a Sleep
5) Se la execute della query risponde, il valore di blResp è true
ed il ciclo lo scopre e termina
6) Altrimenti il ciclo termina comunque dopo 5 secondi
7) Testi blResp per comportarti di conseguenza
Le mie prove danno esito positivo. Prova anche tu e fammi sapere.
Ciao,![]()

Rispondi quotando