アプリケーション全体のカルチャを設定する方法はありますか? 現在のスレッドと新しいスレッドすべて? 質問する

アプリケーション全体のカルチャを設定する方法はありますか? 現在のスレッドと新しいスレッドすべて? 質問する

アプリケーション全体のカルチャを設定する方法はありますか? 現在のすべてのスレッドと新しいスレッドですか?

文化の名前はデータベースに保存されており、アプリケーションが起動すると、

CultureInfo ci = new CultureInfo(theCultureString);
Thread.CurrentThread.CurrentCulture = ci;
Thread.CurrentThread.CurrentUICulture = ci;

しかし、もちろん、新しいスレッドで何かを実行したい場合、これは「失われ」ます。これをアプリケーション全体に設定する方法はあるのでしょうかCurrentCulture?CurrentUICulture新しいスレッドにもそのカルチャが適用されるのでしょうか? それとも、新しいスレッドが作成されるたびに、接続できる何らかのイベントが起動されるのでしょうか?

ベストアンサー1

.NET 4.5では、CultureInfo.DefaultThreadCurrentCultureAppDomain のカルチャを変更するプロパティ。

4.5 より前のバージョンでは、リフレクションを使用して AppDomain のカルチャを操作する必要があります。スレッドが自身にそのプロパティを設定していない場合に何を返すかを制御するプライベート静的フィールドが にありますCultureInfo( m_userDefaultCulture.NET 2.0 mscorlib では 、s_userDefaultCulture.NET 4.0 mscorlib では )。CurrentCulture

これによってネイティブ スレッド ロケールが変更されることはありません。したがって、この方法でカルチャを変更するコードを配布するのはおそらく良い考えではありません。ただし、テストには役立つ場合があります。

おすすめ記事