我的代码是从dll加载.resx文件中的资源。它将资源加载到大约40左右,然后开始抛出内存异常。任何人都可以向我解释为什么会这样吗?以及如何解决它?
编辑:
我通过将解决方案中的所有项目更改为64位解决了我的问题。
由于
/// <summary>
/// Loads all default resources.
/// </summary>
/// <returns></returns>
private static List<Bitmap> LoadAllInternalResources()
{
List<Bitmap> Ret = new List<Bitmap>();
#region Spades
Ret.Add(MainResources.MainResources._50);
Ret.Add(MainResources.MainResources._46);
Ret.Add(MainResources.MainResources._12);
Ret.Add(MainResources.MainResources._38);
Ret.Add(MainResources.MainResources._34);
Ret.Add(MainResources.MainResources._30);
Ret.Add(MainResources.MainResources._26);
Ret.Add(MainResources.MainResources._22);
Ret.Add(MainResources.MainResources._18);
Ret.Add(MainResources.MainResources._14);
Ret.Add(MainResources.MainResources._10);
Ret.Add(MainResources.MainResources._6);
Ret.Add(MainResources.MainResources._2);
#endregion Spades
#region Clubs
Ret.Add(MainResources.MainResources._49);
Ret.Add(MainResources.MainResources._45);
Ret.Add(MainResources.MainResources._41);
Ret.Add(MainResources.MainResources._37);
Ret.Add(MainResources.MainResources._33);
Ret.Add(MainResources.MainResources._29);
Ret.Add(MainResources.MainResources._25);
Ret.Add(MainResources.MainResources._21);
Ret.Add(MainResources.MainResources._17);
Ret.Add(MainResources.MainResources._13);
Ret.Add(MainResources.MainResources._9);
Ret.Add(MainResources.MainResources._5);
Ret.Add(MainResources.MainResources._1);
#endregion Clubs
#region Hearts
Ret.Add(MainResources.MainResources._51);
Ret.Add(MainResources.MainResources._47);
Ret.Add(MainResources.MainResources._43);
Ret.Add(MainResources.MainResources._39);
Ret.Add(MainResources.MainResources._35);
Ret.Add(MainResources.MainResources._31);
Ret.Add(MainResources.MainResources._27);
Ret.Add(MainResources.MainResources._23);
Ret.Add(MainResources.MainResources._19);
Ret.Add(MainResources.MainResources._15);
Ret.Add(MainResources.MainResources._11);
Ret.Add(MainResources.MainResources._7);
Ret.Add(MainResources.MainResources._3);
#endregion Hearts
#region Diamonds
Ret.Add(MainResources.MainResources._52);
Ret.Add(MainResources.MainResources._48);
Ret.Add(MainResources.MainResources._44);
Ret.Add(MainResources.MainResources._40);
Ret.Add(MainResources.MainResources._36);
Ret.Add(MainResources.MainResources._32);
Ret.Add(MainResources.MainResources._28);
Ret.Add(MainResources.MainResources._24);
Ret.Add(MainResources.MainResources._20);
Ret.Add(MainResources.MainResources._16);
Ret.Add(MainResources.MainResources._12);
Ret.Add(MainResources.MainResources._8);
Ret.Add(MainResources.MainResources._4);
#endregion Diamonds
#region Jokers
Ret.Add(MainResources.MainResources._54);
Ret.Add(MainResources.MainResources._53);
#endregion Jokers
return Ret;
}
答案 0 :(得分:0)
您的计算机没有足够的内存来加载所有这些位图。你需要同时加载它们吗?
以下是解决此问题的一些方法:
File.ReadLines
使用了类似的方法。它返回IEnumberable
,当您遍历它时,它一次读取一行。 File.ReadAllLines
会将整个文件读入内存。因此,如果您有一个4GB的文件,每行50KB,File.ReadLines
一次读取50KB。 File.ReadAllLines
将整个4GB读入内存。 (这些数字是任意选择的)。因此,在32位机器上,File.ReadAllLines
会导致内存不足,但File.ReadLines
可能不会在整个枚举器上调用ToList()
。答案 1 :(得分:0)
要解决我的问题,我所要做的就是将项目设置更改为64位,而不是32位。