La documentation ici indique que
les développeurs doivent appeler la méthode EndExecuteNonQuery pour terminer l'opération.
Je n'ai pas été en mesure de find une bonne raison pour laquelle cela est, ou ce que les résultats de ne pas appeler EndExecuteNonQuery
sont.
Une idée de ce qui va se passer si elle n'est pas appelée? Je ne veux pas bloquer, y a-t-il un moyen de l'appeler automatiquement dans un AsyncCallback
?
Cela fera des choses comme:
Alors oui: faites-le
Par définition, tous ces appels asynchronouss ne peuvent pas être faits dans un bloc utilisant pour s'assurer que la connection est fermée. En tant que tel, appelez EndExecutexxx est nécessaire.
En regardant le code dans le réflecteur, nous pouvons voir la trace de la fermeture de la connection dans EndExecuteNonQuery
:
SqlDataReader reader = this.CompleteAsyncExecuteReader(); if (reader != null) { reader.Close(); }