CultureInfo

Tags:    vb.net

Hejsa

Jeg har et lille problem som jeg håber i kan hjælpe med at løse.
Der er en konsol applikation der gør brug af et library (dll) for at lave en rapport.
Her skal der sættes Culture og UICulture, både i konsolapplikationen og også i dll'en.

Det jeg gerne vil er at sørge for det kun sættes i konsolapplikationen, og alle tråde initieret på grund af min konsolapplikation får samme Culture og UICulture.
Problemet er at dette sker i hver sin tråd (gør rapporten selv uden min indblanding) og gør dermed at Culture bliver standart engelsk og alle tal bliver til "1000.0" i stedet for "1.000,0" (dansk).

Kan se der er noget med DefaultCulture i .NET 4.5, men den er baseret på .NET 4 så det er ikke tilgængeligt og som sagt så får de andre nystartede tråde ikke samme culture som den der har startet konsol applikationen.
Ved ikke om det er muligt at sætte den for thread pool mens applikationen kører og dermed vil alle tråde startet i den givne context få samme UI culture som min konsol applikation har startet med at definere.

Så er der nogen der kan hjælpe med at sætte Culture og UICulture for hele applikationsdomænet?



4 svar postet i denne tråd vises herunder
0 indlæg har modtaget i alt 0 karma
Sorter efter stemmer Sorter efter dato
*edit*

consol applikation skriver du jo... Glem bare nedenstående ;-)



Er det ikke "bare" at sætte det i web.config? Et gæt, for jeg har aldrig haft brug for det:

<globalization uiCulture="da" culture="da-DK" />




*EDIT igen igen****

Måske hver gang du starter en ny tråd:

Fold kodeboks ind/udCSharp kode 




Indlæg senest redigeret d. 12.10.2012 08:16 af Bruger #9814
*edit*

consol applikation skriver du jo... Glem bare nedenstående ;-)



Er det ikke "bare" at sætte det i web.config? Et gæt, for jeg har aldrig haft brug for det:

<globalization uiCulture="da" culture="da-DK" />




*EDIT igen igen****

Måske hver gang du starter en ny tråd:

Fold kodeboks ind/udCSharp kode 
Problemet i denne affære er netop at jeg ikke starter dem, men jeg laver en rapport som selv starter en ny tråd til dll'en og dermed ikke får sat Culture og UICulture.
Jeg ville umiddelbart have troet den "arvede" culture fra den process den er startet med, men hvis jeg ikke sætter det inde i DLL'en også så kommer der "1000.0" ud i stedet for "1.000,0" ud.



var culture = new CultureInfo("da-DK", true)
Thread.CurrentThread.CurrentCulture = culture ;
Thread.CurrentThread.CurrentUICulture = culture ;

Som start i din console app, men hvorfor skal brugerne ikke have OS'ets culture ? skaber det problemer med rapporterne eller ?


/J





var culture = new CultureInfo("da-DK", true)
Thread.CurrentThread.CurrentCulture = culture ;
Thread.CurrentThread.CurrentUICulture = culture ;

Som start i din console app, men hvorfor skal brugerne ikke have OS'ets culture ? skaber det problemer med rapporterne eller ?


/J



Det er prøvet og virker ikke, fordi jeg ikke starter hver tråd, men det gør rapporten selv.
Det kan ikke løses før .NET 4.5 hvor man får DefaultCulture så du kan sætte hvad nye tråde du ikke selv starter får af culture fra standart, men det har vi ikke adgang til. Så det måtte blive den klodsede løsning desværre.
Den får ikke den culture som OS'et har, men ser ud som om det Win32 API'et der har en default som er engelsk og den her får det.
Jeg læste om en der havde prøvet at se hvad hans værdi var før render-metoden, og der var den fransk som specificeret, under render blev den til engelsk og efter render er slut var den fransk igen.
Så det måtte blive den ikke så pæne løsning.

Og det skal være dansk uanset hvad brugerne har fået sat på deres maskine for
a) Det er ikke sikkert det er sat op for dem.
b) Er ikke sikkert de kan finde ud af og ændre det.



t