Bonjour,
Je souhaiterai interrompre l’exécution d'une requête si pas de retour après un certain temps. Sur le principe ça à l'air simple mais je n'y arrive pas et pourtant j'ai cherché !
Je précise que la requête à interrompre est le lancement d'une procédure stockée sur DB2, lancé en C# par un OledbCommand (ici nommé "cmd") :
Il existe un paramètre "Timeout" dans OleDbcommand mais il ne fonctionne pas sur DB2 visiblement.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 cmd.CommandText = "{CALL MABIB.MONPGM};" cmd.ExecuteNonReader();
J'ai donc essayé de chercher du coté de l'asynchrone, et j'ai testé à peu près tout ce que j'ai trouvé sur la toile concernant les threads, tasks, ExecuteNonReaderAsync(), await, AsyncCalback etc etc.
systématiquement mon programme est bloqué durant toute l’exécution de la requête.
J'ai donc du passer à coté de quelque choses au niveau de la gestion de l'asynchrone...
Est-ce que quelqu'un a une idée de comment stopper l’exécution de la requête au bout de x secondes par ex ?
Mon idée aussi naïve soit-elle serait de lancer dans un thread secondaires ma requête, puis dans le thread principal surveiller l'execution du thread secondaire, en vérifiant par ex s'il est terminé toutes les 100ms, et si au bout de 5 sec il n'est pas fini je le kill et je passe à la suite..
Par avance merci pour votre aide !
Partager