Existe-t-il un moyen d'appeler de manière asynchrone une procédure stockée DB2 à l'aide de DB2 .NET Data Provider?Appel de procédure asynchrone avec DB2 .NET Data Provider
Répondre
BeginExecuteNonQuery ne fonctionne pas?
Le problème est qu'il n'y a pas BeginExecuteNonQuery.
Il y a un certain nombre de façons dont l'une dépend de votre scénario. Ce que je faisais dans Oracle consistait à récupérer des milliers d'éléments XML à partir d'une base de données en fonction d'une file d'attente d'ID d'éléments de travail. Les sortir en une fois avec un lecteur de données ne fonctionnait pas, alors je les ai sortis un à la fois sur plusieurs threads différents (chaque thread a sorti un élément de travail d'une file d'attente jusqu'à ce que la file d'attente soit vide). Comme chaque thread séparé a obtenu le résultat, il a mis le XML dans une file d'attente de producteur-un basé sur Joseph Albahari's excellent threading tutorial. Un fil séparé a regardé la file d'attente du producteur, a effectué des transformations XSL sur les données et les a écrites dans un fichier - bien sûr, j'ai fait un benchmarking en un seul thread, ce qui était beaucoup plus lent. J'ai essayé d'utiliser le threadpool/asynchronous delegates pour commencer (comme le conseil général sur le threading est d'utiliser le threadpool si possible, ce que les délégués font indirectement aussi), ce qui peut fonctionner si vous n'avez pas plus de 64 éléments faire. WaitHandle.WaitAll
usually has a limit of 64 work items.. Comme j'avais des 1000, ce n'était pas une bonne option, à part de les faire en lots 64 qui semblaient kludgy. De la mémoire j'ai quitté gracieusement les threads de production quand il n'y avait plus de travail pour chacun à faire, puis bloquer jusqu'à ce que la file d'attente du producteur soit également vide. Le plus important est de vous assurer que vous avez des objets DB complètement séparés sur chaque thread, sinon vous tomberez sur des problèmes de threads.
Si vous souhaitez exécuter une seule procédure stockée asynchrone dans une application Windows/WPF, vous pouvez utiliser le background worker component. Faites-moi savoir si vous avez besoin d'informations supplémentaires.
Si DB2 ne prend pas en charge BeginExecuteReader, vous pouvez utiliser des délégués asynchrones pour effectuer l'opération. Fonctionnellement, ce serait la même chose, sauf que vous l'implémentiez vous-même plutôt que d'utiliser quelque chose de intégré.
Vérifiez l'exemple ici: sql async query problem…
- 1. .NET Framework Data Provider introuvable sur l'hôte
- 2. Appel asynchrone à WCF avec C#?
- 3. WPF Appel MessageBox.Show asynchrone
- 4. Appel d'une procédure de stockage avec nHibernate
- 5. Avec les paramètres nommés avec MySQL .NET Provider
- 6. Procédure stockée db2. verrouiller/libérer la table
- 7. Appel de la procédure stockée
- 8. Récupérer la valeur de retour de la procédure stockée DB2
- 9. .NET Data Adapter Timeout SP Issue
- 10. MySQL .Net Provider 5.2 n'apparaît pas dans la boîte de dialogue Data Source de VS 2008 Express
- 11. Appels de procédure stockés asynchrones
- 12. Asterisk & IVR & provider
- 13. Appel des services Web .NET de manière asynchrone à partir de Java
- 14. Transaction distribuée de .NET vers DB2
- 15. DTS DB2 Problème de connexion
- 16. Comment utiliser HttpWebRequest (.NET) de manière asynchrone?
- 17. Création de plusieurs NSURLConnections. Comment identifier quel appel asynchrone
- 18. Appel du service WCF de manière asynchrone dans une boucle
- 19. DB2 - Modifie les données SQL
- 20. Appel du service Web .Net avec Php
- 21. Comment signaler un délai d'attente dans un appel asynchrone?
- 22. Connexion à DB2 via .NET DbConnection
- 23. WebRequest asynchrone avec les paramètres POST dans .NET Compact Framework
- 24. Problème de connexion Db2 avec Java
- 25. SubSonic 3.0.0.3 Appel procédure stockée Problème
- 26. Cache de second niveau NHibernate avec NHibernate Linq Provider 1.0
- 27. Comment puis-je tester une méthode contenant un appel asynchrone?
- 28. Procédure stockée mySQL avec un problème de connecteur .NET
- 29. Annulation d'un appel asynchrone d'un service Web ASP.NET
- 30. Appel asynchrone pour service WCF hébergé dans le service Windows
Il est certainement le cas avec Oracle qu'il n'y a pas BeginExecuteNonQuery. Je ne connais pas le fournisseur de données DB2 .NET. Pour Oracle, j'ai dû faire la fonctionnalité asynchrone moi-même. – RichardOD