Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/331.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 GetResourceSet变得很慢_C#_Asp.net_Asp.net Mvc - Fatal编程技术网

C# ResourceManager GetResourceSet变得很慢

C# ResourceManager GetResourceSet变得很慢,c#,asp.net,asp.net-mvc,C#,Asp.net,Asp.net Mvc,我有一个比较老的两种语言的站点(使用resx文件的c#/js),其中特定页面的语言不是由用户喜欢的语言决定的,而是由页面上显示的帖子的创建方式决定的——为了使用AJAX向客户端提供正确的语言,我有以下代码 var rm = new ResourceManager(typeof(T)); using (var rs = rm.GetResourceSet(CultureInfo.CurrentUICulture, true, true)) { var result = rs.Cast<

我有一个比较老的两种语言的站点(使用resx文件的c#/js),其中特定页面的语言不是由用户喜欢的语言决定的,而是由页面上显示的帖子的创建方式决定的——为了使用AJAX向客户端提供正确的语言,我有以下代码

var rm = new ResourceManager(typeof(T));
using (var rs = rm.GetResourceSet(CultureInfo.CurrentUICulture, true, true))
{
    var result = rs.Cast<DictionaryEntry>().ToDictionary(x => x.Key.ToString(), x => x.Value.ToString());
    return result;
}
var rm=newresourcemanager(typeof(T));
使用(var rs=rm.GetResourceSet(CultureInfo.CurrentUICulture,true,true))
{
var result=rs.Cast().ToDictionary(x=>x.Key.ToString(),x=>x.Value.ToString());
返回结果;
}
一段时间后,它可能需要数周甚至数月的时间,GetResourceSet可能会变得非常缓慢,很容易达到10-15秒,我需要重新启动应用程序池。“有趣”的是,这只发生在两种语言中的一种,而且使用最少。这不能在开发或测试环境中引起。没有错误发生,只是速度变慢了


我想这是因为GetResourceSet中存在一些锁定,但如何解决此问题?

您说您使用了来自resx文件的资源。如果您不需要将它们编译到程序集中,但可以直接从resx文件获取
ResourceSet
实例,那么这是一种解决方案吗?如果是,则可能是答案。否则,您可以尝试不时调用
rm.ReleaseAllResources
,以便清除内部缓存。但是,如果根本原因是
ResourceManager
内部存在某种神秘的锁,那么它可能会让事情变得更糟……我认为,只有通过时间或负载测试重新调整慢度,然后运行探查器或调试诊断工具的一些选项(mem泄漏查找等),才能找到真正的答案