Bonjour,
voilà je développe actuellement une appli en C#, qui utilise une base oracle..
Mon soucis en le suivant: je fait un traitement itératif qui utilise les transactions, une qui englobe le tout, et "x" ouvertes dans chacune de mes itérations, comme ceci:
le souci est que, quand je catch une exception à l'endroit "Ici mon code", et que ce code a ouvert un curseur dans oracle, il ne se ferme pas
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 using (TransactionScope tsMonTraitement = new TransactionScope(TransactionScopeOption.RequiresNew)) { try { foreach( blablabla) { using (TransactionScope tsSousTraitement = new TransactionScope(TransactionScopeOption.RequiresNew)) { try { "Ici mon code" tsSousTraitement .Complete(); } catch (Exception ex) { ... } } } tsMonTraitement.Complete(); } catch (Exception e) { ... } }
Si je ne catch pas d'erreur, bien sûr le tsSousTraitement .Complete(); ferme mon curseur, mais quand j'ai une erreur avant, pas moyer de le fermer, même en mettant tsSousTraitement .Dispose(); dans le catch de mon sous traitement.
Est ce que quelqu'un s'y connait assez en curseur pour me dire ce qui pourrait faire planter mon programme ??
Par avance merci !
Partager