je ai une connection asynchrone a une db, seulement lorsque sa prend trop de temps j'aimerai annuler cette connection
voila le code :
lorsque le time out se produit si je declance un cnn.close sa declanche l'erreur suivante : Vous ne pouvez pas faire cela sur une connection asynchrone
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33 Private Function createConnection() As Boolean Dim cnn As ADODB.Connection On Error GoTo fail Set cnn = New ADODB.Connection cnn.ConnectionTimeout = TIMEOUT_CON '10 sec de time out Dim lngStartTime As Long lngStartTime = GetTickCount() cnn.Open m_chaineDeConnexion, , , adAsyncConnect '-----------' 'Attente que la connexion soit établie Dim crt As Long While (cnn.State = adStateConnecting) DoEvents crt = GetTickCount() - lngStartTime If crt > TIMEOUT_CON * 1000 Then cnn.Close 'ou cnn.Cancel <======================= End If Wend '-----------' Set m_connection = cnn createConnection = True Exit Function fail: createConnection = False 'Vérification des erreurs dans le cas d'une mauvaise connexion If cnn.Errors.Count > 0 Then 'Affichage des erreurs MsgBox cnn.Errors.Item(0) Else MsgBox Err.Description End If End Function
lorsque je met un cnn.cancel, il reste bloquer sur la ligne pendant une 30aine de sec
deplus le cnn.ConnectionTimeout = TIMEOUT_CON '10 sec de time out ne fonctionne absolument pas puisqu'il reste dans la boucle while 30 sec (time out par default !!) bref j'y comprend rien !
if Anybody has a solution ...
Apres d'autre test : si je fait un set Cnn = Nothing, meme comportement que cnn.cancel ... il s'arrete sur la ligne ... attend puis repart apres environ 30 sec
Partager