You shouldn't do this on every culture formatting operation. Instead you should set your culture format once in the app and then re-use those settings for all format operations. If that's not possible for whatever reason then at least cache the CultureInfo structures in a Dictionary< string,CultureInfo > structure and retrieve the pre-set culture instead of recreating and re-customizing each time. Loading up a culture is expensive as .NET has to populate all those culture specific values from the OS each time.
If this is a Web app you should do this once in the beginning of a request Application_BeginRequest and then simply use CultureInfo.
You can find more info on this here:
http://www.west-wind.com/presentations/wwDbResourceProvider/introtolocalization.aspxThere's a section on "Assigning Culture in ASP.NET" that shows how to do this exact thing (setting the currency symbol specifically).
In desktop applications you'd do the same thing either when the Application starts for the first time, or when the user switches locales (bad idea) on the fly within the application.
+++ Rick ---