"Expiration du délais d'attente" mais pourquoi ? - C#/.NET managed - Programmation
Marsh Posté le 25-07-2006 à 17:32:33
C'est au moment de la connection que ça déconne, ou au moment de l'execution ?
Si c'est l'execution qui plante, alors t'as bêtementun TimeOut.
dans ton objet sqlConnection, modifie la propriété de timeout.
idem dans ton objet sqlCommand.
et si t'as une transaction, toujours pareil.
Marsh Posté le 25-07-2006 à 17:38:58
je l'ai repéré dans le SQLCommand que j'ai mis à zéro mais je ne savais pas qu'il pouvait y être dans le sqlConnection. Je te remercie
Marsh Posté le 25-07-2006 à 17:53:33
Maintenant il est placé à zéro et là j'ai les enregistrement.
Une autre question. Lorsqu'il y qu'un thread le programme est bloqué le temps de l'execution. Le progress bar aussi il est bloqué ?.
Marsh Posté le 25-07-2006 à 20:18:50
Berceker United a écrit : Maintenant il est placé à zéro et là j'ai les enregistrement. |
euh... rassure moi là : tu ne mets pas à jour le progressbar à partir d'un autre thread directement au moins ?
Marsh Posté le 25-07-2006 à 21:03:24
Ce que je voulais dire c'est que c'est pas un programme multi thread. Donc quand je lance le bouzin le programme reste figé mais je ne vois pas progressbar faire son travail pourtant je l'ai testé ailleurs et ça fonctionne.
Je débute et je ne maitrise pas ça encore. C'est mon premier programme
Marsh Posté le 25-07-2006 à 21:17:06
Il faut utiliser BeginInvoke() pour mettre à jour les controles. Les controles de Winforms ne sont pas thread safe, il est donc nécessaire de poster toute action que tu souhaites réaliser dessus dans une file d'attente.
BeginInvoke() prend en paramètre un delegate qui pointera vers la fonction dans laquelle tu mets à jour ta progressbar.
http://www.codeproject.com/csharp/begininvoke.asp
edit: c'est marrant, le 1er paragraphe de cet article commence exactement comme ton dernier post
Marsh Posté le 25-07-2006 à 21:37:37
Ha effectivement c'est qu'il y en qui pense à tous *
Bref en tous cas j'ai des choses à apprendre encore. But final Faire l'equivalent voir mieux de Flight simulator.
Spoiler : |
Marsh Posté le 26-07-2006 à 09:41:08
Harkonnen a écrit : BeginInvoke() prend en paramètre un delegate qui pointera vers la fonction dans laquelle tu mets à jour ta progressbar. |
Ca m'intéresse aussi ça tiens
Me suis arraché les cheveux toute la soirée hier là-dessus.
J'ai foutu des delegate partout, des threads dans tous les sens, recopié deux exemples de la doc C# et tout... pas moyen de mettre à jour ma progressbar.
Et vu que j'ai eu des pépins d'internet toute la soirée, j'ai fini par caller l'affaire
Vais regarder ça avec la plusgrande attention (en espérant que ça résolve enfin mon problème... là j'en suis à "je bloque sur le this.invoke()" <- le programme se met en pause et je sais pas pkoi )
Marsh Posté le 26-07-2006 à 20:46:33
petit up du topic, car le coup du invoke ne marche pas chez moi.
j'avais trouvé en première instance dans la msdn le même exemple que celui filé par harko. ça changeait RIEN.
j'ai ensuite modifié le truc selon un autre exemple de la msdn, sans effet... là ça restait carrément bloqué sur le Invoke()
le principe :
- lorsque je commence le "grabfiles", je vais lancer un traîtement long, qui consiste à vérifier dans un répertoire, fichier par fichier, que c'est bien une image.
- je lance donc ça dans un thread, qui doit entre autres, mettre à jour une progressbar disant où il en est.
- pendant ce temps, le thread principal doit attendre la fin du fils avant de continuer (et je pense que c'est ça qui coince)
Code :
|
=> le code est "tel quel". il tourne, mais y'a carrément plus de gestion de la progressbar... j'ai shooté tout ce qui ressemblait aux appels à une delegate.
Marsh Posté le 26-07-2006 à 20:46:48
ps: désolé, c'est un peu carrément le bordel...
en commentaires, c'est la dernière tentative que j'ai fait : le thread principal qui tente de mettre à jour la progressbar pendant que le fils tourne... toujours sans effest (mise à part tout ralentir)
Marsh Posté le 25-07-2006 à 17:28:26
Bonjour.
J'ai fais un petit programme qui fais une opération lourde sur un Server de base de données dans mon cas. SQLServer 2000. Je finis mon truc mais voila que maintenant il m'annonce au bout d'une disaine de seconde le message suivant
"Expiration du délai d'attente. Le délai d'attente s'est écoulé avant la fin de l'opération ou le serveur ne répond pas." et apparement c'est .Net SqlClient Data Provider qui lui a sortie cela. Ce que je ne comprend pas c'est que cette requete s'execute depuis d'autre application telle que php ou via l'analyseur de code. Certe l'opération dure 2h environs.
Voici ma chaine de connexion "Data Source=xxx.xxx.xxx.xxx;Initial Catalog=Chicom_;User Id=sa;Password=;"
Aurais-je raté quelque chose ou y a t'il une chose à savoir?
Ma methode permettant d'ecrire dans une table
Message édité par Berceker United le 25-07-2006 à 17:32:04