sashka_shurik
Messages postés4Date d'inscriptionsamedi 15 avril 2006StatutMembreDernière intervention 9 avril 2007 7 sept. 2006 à 14:47
J'ai envoye un message a ta boite.
Pour les lecteurs interesses dans le suhet une question:
Si on appelle StartRead() quand on cree ou execute le premier fois le IEnumerator et apres quelque iteration le foreach() termine sans arriver a la fin de sequence, peut on verifier que le foreach vient de terminer? peut on verifier si la reference cree par foreach en question est toujours accessible ?
De ma part la seule solution envisageable est d'avoir un liste interne de "weak references" dans le class que vont retracer la creation de tout IEnumerator et qui vont aider a verifier si un "strong reference" existe qq ailleur dans le code chaque fois que un write est applee.
cs_Dargos
Messages postés13Date d'inscriptionmardi 18 avril 2006StatutMembreDernière intervention27 mars 2008 7 sept. 2006 à 12:37
sashka_shurik :
>Tu peux implementer ton propre IEnumerator qui serait l'enfant de IEnumerator de C# et qui aurait tout le code necessaire pour la protection thread.
>la migration d'un class generique vers le tien(et vise versa) se ferrait facilement.
effectivement !
mais la, je ne sais comment faire : dans le foreach, il y a un appel au IEnumerator a chaque boucle. d'où le fait que je bloques au debut du foreach, et que je libere à la fin...
peux tu m'en dire plus sur ceci ? (implementer ton propre IEnumerator)
en tout cas merci pour ce bon commentaire :)
sashka_shurik
Messages postés4Date d'inscriptionsamedi 15 avril 2006StatutMembreDernière intervention 9 avril 2007 6 sept. 2006 à 15:06
Tres interessant :-) comme code
Suggestion(s):
Dans la fonction "public TValue this[TKey Key]" dans le "set" et le "get" tu peut aussi verifier pour lecture et/ou ecriture.
Tu peux implementer ton propre IEnumerator qui serait l'enfant de IEnumerator de C# et qui aurait tout le code necessaire pour la protection thread.
Si ces deux choses sont fait. Tu peut rendre StartRead et EndRead prives et donc le class serait tout a fait le meme que le generique SortedList de point de vue utilisateur. De plus, la migration d'un class generique vers le tien(et vise versa) se ferrait facilement.
Autrement, une super bonne idee :-) je vais peut etre l'utiliser dans mon projet:-)
7 sept. 2006 à 14:47
Pour les lecteurs interesses dans le suhet une question:
Si on appelle StartRead() quand on cree ou execute le premier fois le IEnumerator et apres quelque iteration le foreach() termine sans arriver a la fin de sequence, peut on verifier que le foreach vient de terminer? peut on verifier si la reference cree par foreach en question est toujours accessible ?
De ma part la seule solution envisageable est d'avoir un liste interne de "weak references" dans le class que vont retracer la creation de tout IEnumerator et qui vont aider a verifier si un "strong reference" existe qq ailleur dans le code chaque fois que un write est applee.
7 sept. 2006 à 12:37
>Tu peux implementer ton propre IEnumerator qui serait l'enfant de IEnumerator de C# et qui aurait tout le code necessaire pour la protection thread.
>la migration d'un class generique vers le tien(et vise versa) se ferrait facilement.
effectivement !
mais la, je ne sais comment faire : dans le foreach, il y a un appel au IEnumerator a chaque boucle. d'où le fait que je bloques au debut du foreach, et que je libere à la fin...
peux tu m'en dire plus sur ceci ? (implementer ton propre IEnumerator)
en tout cas merci pour ce bon commentaire :)
6 sept. 2006 à 15:06
Suggestion(s):
Dans la fonction "public TValue this[TKey Key]" dans le "set" et le "get" tu peut aussi verifier pour lecture et/ou ecriture.
Tu peux implementer ton propre IEnumerator qui serait l'enfant de IEnumerator de C# et qui aurait tout le code necessaire pour la protection thread.
Si ces deux choses sont fait. Tu peut rendre StartRead et EndRead prives et donc le class serait tout a fait le meme que le generique SortedList de point de vue utilisateur. De plus, la migration d'un class generique vers le tien(et vise versa) se ferrait facilement.
Autrement, une super bonne idee :-) je vais peut etre l'utiliser dans mon projet:-)