Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/281.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/EmptyTag/143.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# GDI+;关于64位系统_C#_.net_Gdi+ - Fatal编程技术网

C# GDI+;关于64位系统

C# GDI+;关于64位系统,c#,.net,gdi+,C#,.net,Gdi+,我们的系统使用了大量大型位图(system.Drawing.Bitmap),有时内存不足,出现“参数无效”错误。这是有道理的,因为很难分配大的连续内存块 所以问题是。。。如果我们将系统升级到64位,这个问题会消失吗?不久前,在Vista 64位系统上使用Visual Studio 2008进行开发时,我经常遇到这种错误。因此,我想迁移到64位可能会增加成功的机会,并减少错误发生的频率,但我不认为迁移到64位会完全治愈错误 帮助我的是这个链接: 它是一个替代内存分配策略s.t.的包装器。您往往会

我们的系统使用了大量大型位图(system.Drawing.Bitmap),有时内存不足,出现“参数无效”错误。这是有道理的,因为很难分配大的连续内存块


所以问题是。。。如果我们将系统升级到64位,这个问题会消失吗?

不久前,在Vista 64位系统上使用Visual Studio 2008进行开发时,我经常遇到这种错误。因此,我想迁移到64位可能会增加成功的机会,并减少错误发生的频率,但我不认为迁移到64位会完全治愈错误

帮助我的是这个链接:


它是一个替代内存分配策略s.t.的包装器。您往往会得到更大的连续内存块。也许您也可以在应用程序中使用类似的内存分配策略,因为这个策略应该只包装visual studio。

不久前,在Vista 64位系统上使用visual studio 2008进行开发时,我经常遇到这种错误。因此,我想迁移到64位可能会增加成功的机会,并减少错误发生的频率,但我不认为迁移到64位会完全治愈错误

帮助我的是这个链接:


它是一个替代内存分配策略s.t.的包装器。您往往会得到更大的连续内存块。也许您也可以在应用程序中使用类似的内存分配策略,因为这个策略应该只包装visual studio。

如果这是内存分配问题(由于大对象堆的碎片化,很可能在加载20个左右的图像后分配100MB块时会遇到问题,即使其中一些图像随后已卸载),然后移动到64位应该会有所帮助-更大的地址空间应该给堆足够的工作空间,从而缓解症状


内存问题应该会产生OutOfMemoryException,但是.net中的位图处理代码可能正在捕获该异常并有效地转换为InvalidParameterException。但是,也可能存在与图像的大小/格式相关的另一个问题,并且它确实是一个无效参数。

如果这是一个内存分配问题(由于大对象堆的碎片,很可能在加载20个左右的图像后分配100MB块时会遇到问题,即使其中一些图像随后已卸载),然后移动到64位应该会有所帮助-更大的地址空间应该给堆足够的工作空间,从而缓解症状


内存问题应该会产生OutOfMemoryException,但是.net中的位图处理代码可能正在捕获该异常并有效地转换为InvalidParameterException。但是,也有可能存在与图像大小/格式相关的另一个问题,并且它确实是一个无效参数。

是系统上可以创建的位图大小的限制

查看一个可以显示系统限制的程序


也许您达到了这个极限。

在系统上创建位图的大小是有限制的

查看一个可以显示系统限制的程序


也许你达到了这个极限。

在分配这些大位图之前,你可以尝试调用GC.Collect()。我最近正好遇到了这个问题,这很有帮助。(我的第一反应也是移动到64位,但添加一行代码稍微简单一些。;-)

在分配这些大位图之前,您可以尝试调用GC.Collect()。我最近正好遇到了这个问题,这很有帮助。(我的第一反应也是移动到64位,但添加一行代码稍微简单一些。;-)

一般来说,当你开始在内存中使用巨大的位图时,你总是会遇到这种问题。避免这种情况的最好方法是将你的图像分割成一个数组或类似的东西,这样你就可以创建一个网格

从那时起,您只需在屏幕上加载可以查看的内容即可节省大量内存

当我决定创建一个小游戏来消磨时间时,我就遇到了这种情况

我决定创建一个迷宫/管道游戏,用户可以选择列数和行数。我决定将图像限制为10000px乘以10000px

我的第一次尝试,我正好遇到了你的问题。一个接一个的错误,主要是内存问题

我决定做一些关于如何做我想做的事情的研究,我找到了解决办法

我所做的是我创建了一个动态2d阵列(我决定将它限制在1000×1000的最大值),然后我把小的10x10像素的图像或用户决定的任何图像放入其中

完成后,内存/加载速度等问题就消失了

在我修复之前,内存使用量很容易超过一个gig,现在当你使用限制时,应用程序的内存使用量在150到225兆ram之间


如果您想尝试,请下载此功能,然后查看菜单(迷宫)并使用设置:

通常,当您开始在内存中使用大型位图时,总会遇到此类问题。避免此问题的最佳方法是将图像分割成数组或类似的内容,以便创建网格

从那时起,您只需在屏幕上加载可以查看的内容即可节省大量内存

当我决定创建一个小游戏来消磨时间时,我就遇到了这种情况

我决定创建一个迷宫/管道游戏,用户可以选择列数和行数。我决定将图像限制为10000px乘以10000px

我的第一次尝试,我正好遇到了你的问题。一个接一个的错误,主要是内存问题

我决定做一些关于如何做我想做的事情的研究,我找到了解决办法

什么
var bmp = new Bitmap(width, height, pixelDepth)
var bmp = new Bitmap(pathToLargeFilename);