Changement de CultureInfo lors du passage dans l'événement Timer.Elapsed [Résolu]

Signaler
Messages postés
23
Date d'inscription
mardi 22 janvier 2002
Statut
Membre
Dernière intervention
16 novembre 2009
-
Messages postés
23
Date d'inscription
mardi 22 janvier 2002
Statut
Membre
Dernière intervention
16 novembre 2009
-
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

Messages postés
6351
Date d'inscription
samedi 1 juin 2002
Statut
Modérateur
Dernière intervention
2 août 2014
92
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
*/
Messages postés
23
Date d'inscription
mardi 22 janvier 2002
Statut
Membre
Dernière intervention
16 novembre 2009

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
Messages postés
23
Date d'inscription
mardi 22 janvier 2002
Statut
Membre
Dernière intervention
16 novembre 2009

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);