【问题标题】:Set CultureInfo for new threads from .NET Windows Service为 .NET Windows 服务的新线程设置 CultureInfo
【发布时间】:2013-05-06 06:48:14
【问题描述】:

我需要为 Windows 服务设置 CultureInfo,用 C# 4.0 编写。麻烦在于操作系统区域设置 - 它与我的服务文化不同。

因为我使用的是 .NET 4.0(在 .NET 4.5 中我可能会更改 所有新线程 的默认文化),我的问题是:

如何在我的 Windows 服务中创建所有新线程,并为它们设置 CultureInfo?

【问题讨论】:

  • @noobob,在您的链接中,topicstarter 询问“如何将全球化资源添加到我的应用程序”。我的应用程序中已有资源,但无法设置 CultureInfo。这会导致错误的资源选择。
  • @noobob,我忘记将本地化资源添加到我的 WiX 生成的 msi 中。谢谢帮助!

标签: c# .net c#-4.0 cultureinfo


【解决方案1】:

Windows 服务并不意味着多线程程序。所以你必须在你的代码中创建线程或者你的服务是 WCF 服务。如果您自己创建线程,只需在创建后设置新线程的文化。如果是 WCF 服务,请参阅 http://msdn.microsoft.com/en-us/library/system.servicemodel.dispatcher.idispatchmessageinspector.aspx。您需要实现 IDispatchMessageInspector 接口,如果有来自客户端的新请求(可能会创建新线程),将调用 AfterReceiveRequest 方法,您可以在此方法中设置 CultureInfo。 如果您的 Windows 服务不是 WCF 服务,请显示有关它的更多信息。

【讨论】:

  • Windows 服务有超过 1 个线程。即使我在服务的“Main”方法上设置了 Thread.CurrentThread.CurrentUICulture,我的业务逻辑代码在其他线程中执行,具有不同的 CultureInfo
猜你喜欢
  • 2011-01-15
  • 1970-01-01
  • 2010-12-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多