Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/327.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在C#中的多线程环境中使用ResourceManager的正确方法?_C#_Multithreading_Localization - Fatal编程技术网

在C#中的多线程环境中使用ResourceManager的正确方法?

在C#中的多线程环境中使用ResourceManager的正确方法?,c#,multithreading,localization,C#,Multithreading,Localization,因此,我目前在解决方案中的所有类都可以访问的静态变量中保存ResourceManager的一个实例。我用它来获取单线程操作的翻译内容,它工作得非常好 但是,我随后添加了一个执行时间稍长的操作,需要更新UI中的进度。对于进度信息字符串,我还使用ResourceManager。问题是,如果在单独的线程上执行,则同一行代码返回null(例如,Localization.ResourceManager.GetString(“ProgressInformation1”)。但是如果我没有为它启动一个新线程,它

因此,我目前在解决方案中的所有类都可以访问的静态变量中保存ResourceManager的一个实例。我用它来获取单线程操作的翻译内容,它工作得非常好


但是,我随后添加了一个执行时间稍长的操作,需要更新UI中的进度。对于进度信息字符串,我还使用ResourceManager。问题是,如果在单独的线程上执行,则同一行代码返回null(例如,Localization.ResourceManager.GetString(“ProgressInformation1”)。但是如果我没有为它启动一个新线程,它会按预期返回字符串。我检查了MSDN库,根据它,ResourceManager应该是线程安全的。那么我做错了什么呢?

可能需要为运行的线程指定CurrentCulture和CurrentUICulture。
只需使用“主”线程中的值。

可能需要为运行的线程指定CurrentCulture和CurrentUICulture。
只需使用“主”线程中的字符串即可。

您可以发布一些代码来演示该问题。可能另一个线程的
CurrentUICulture
与原始线程的不同,并且该字符串没有为回退区域性定义?它确实很简单,不需要设置新线程的区域性。让我感到惊讶的是,我认为我目前支持的两种语言中有一种确实是后备语言,但我想不是:)想回答这个问题,这样我就可以选择它吗?好吧,没有太多要详细说明的,Alexey的答案已经存在了,所以……)你能发布一些代码来说明这个问题吗?也许另一个线程的
CurrentUICulture
与原来的不同,并且字符串没有为回退区域性定义?这确实很简单,不需要设置新线程的区域性。让我感到惊讶的是,我认为我目前支持的两种语言中有一种确实是后备语言,但我想不是:)想回答这个问题,这样我就可以选择它吗?好吧,没有太多要详细说明的,Alexey的答案已经存在了,所以……)我认为你应该把它作为评论,而不是回答。我认为你应该把它作为评论,而不是回答。