Changement de CultureInfo lors du passage dans l'événement Timer.Elapsed

Résolu
cs_Ethan Messages postés 23 Date d'inscription mardi 22 janvier 2002 Statut Membre Dernière intervention 16 novembre 2009 - 17 juin 2008 à 12:54
cs_Ethan Messages postés 23 Date d'inscription mardi 22 janvier 2002 Statut Membre Dernière intervention 16 novembre 2009 - 20 juin 2008 à 12:40
Bonjour,

Lors d'un projet, j'ai besoin de faire un envoi sur un serveur et vérifier le statut de l'envoi toutes les x secondes.
Pour celà j'ai opter pour un timer.
Voici mon bout de code pour l'initialisation du timer :

_IbotpTimer =

new
Timer();_IbotpTimer.

_IbotpTimer.Interval = 3000;

_IbotpTimer.Elapsed +=

new
ElapsedEventHandler(ibotpTimer_Elapsed);
_IbotpTimer.Start();

Donc toutes les 3 secondes je passe dans la fonction ibotpTimer_Elapsed.

Quand je passe dans cette fonction, le System.Threading.Thread.CurrentThread.CurrentUICulture change et deviens "us-en" or avant le passage dans la fonction, il est à "be-fr". Or j'ai besoin que cette proporiété reste à "be-fr".

Est ce que le choix d'un timer est le bon dans mon cas ?
Si oui, comment faire pour intialiser la propriété à "be-fr" ?

J'espère avoir été assez clair (C'est pas mon fort noamlement )

Merci pour votre aide
Ethan

3 réponses

cs_coq Messages postés 6349 Date d'inscription samedi 1 juin 2002 Statut Membre Dernière intervention 2 août 2014 101
20 juin 2008 à 11:35
Salut,

La culture du thread ne change pas : comme le dit la doc (on parle bien de System.Timers.Timer ?), l'event Elapsed est levé dans un thread (de pool) séparé.
Je suppose donc que la culture par défaut du système/utilisateur est en-US, ce qui explique la valeur par défaut pour le thread.
Et il n'y a pas à ma connaissance de moyen d'hériter la culture du thread ayant "fait la demande" initiale, à la création le thread prendra la valeur par défaut de l'utilisateur.
Au passage, une autre question qui reste est de savoir si au moment de retourner au pool la culture du thread est réinitialisée ou pas.

/*
coq
MVP Visual C#
CoqBlog
*/
3
cs_Ethan Messages postés 23 Date d'inscription mardi 22 janvier 2002 Statut Membre Dernière intervention 16 novembre 2009
17 juin 2008 à 15:29
Je m'en suis sorti sans Timer mais juste en gelant le thread avec Sytem.threading.Thread.Sleep(int).

Mais si quelqu'un pouvait me dire comment éviter le changement de CurrentUICulture ce serait gentil !!!

Merci
Ethan
0
cs_Ethan Messages postés 23 Date d'inscription mardi 22 janvier 2002 Statut Membre Dernière intervention 16 novembre 2009
20 juin 2008 à 12:40
Oui on parle bien de System.Timers.Timer

Je saurai pas te dire car j'avais ouvert un thread pour l'envoi et j'ai rajouté la culture de ce thread avec la bonne CultureInfo et j'ai trouvé de suite le problème du thread du timer et changer de suite le timer par le Thread.Stop(int);
0
Rejoignez-nous