locked
FAQs: 为什么我在处理位图时总收到物件异常错误? RRS feed

  • 问题

  • 为了帮助大家更好地学习 VSD 技术,微软论坛技术支持团队编辑了一些列的 "VSD 常见问题及解答" 精华帖。

    本帖的主题是:为什么我在处理位图时总收到物件异常错误?

    如果您觉得这个帖子对您的学习、工作有所帮助,请再把这个帖子分享给你的同学、同事和朋友。

    如果您想阅读更多的 "VSD 常见问题及解答",请打开索引页面:
    http://social.msdn.microsoft.com/Forums/zh-CN/1729/thread/0b66fb9f-37a7-4d77-a43d-6fbd801b26fd

    2011年3月9日 2:24

答案

  • 很多用户在他们的应用程序中使用大位图,但并不知道在.NET CF 中位图是被压缩在内存中的. 此外,在 Windows CE 6.0设备上有32m 虚拟内存的限制。因此,在您的应用程序中经常不小心使用大位图会导致以 OutOfMemoryException OOM)异常。

    下面是使用位图的一些建议:

    1.尽可能快的释放位图对象以便释放内存。当您不再需要该对象,应该删除对位图对象的引用.有关对象的生命周期的详细信息,请参阅以下文章:

    Managing Object Lifetime

    http://msdn.microsoft.com/en-us/magazine/cc163316.aspx

     

    2.不要将非常大的位图加载到内存。相反,可根据目标设备的屏幕分辨率加载一个适当尺寸的缩略图。您可以使用图像的IImage::GetThumbnail  API创建一个图像文件的缩略图。此 API 的托管代码是OpenNETCF中的 OpenNETCF.Drawing.ImageUtils.CreateThumbnail

     

    3.如果您已经遇到OOM异常,.NET CF 远程性能监视工具可以帮助您找到原因。该工具是.NET 框架版 3.5 下的一个很强大的工具。详细请查看:

     

    Finding Managed Memory leaks using the .NET CF Remote Performance Monitor

    http://blogs.msdn.com/stevenpr/archive/2007/03/08/finding-managed-memory-leaks-using-the-net-cf-remote-performance-monitor.aspx


    如果您对我们的论坛在线支持服务有任何的意见或建议,请通过邮件告诉我们。
    MSDN 论坛好帮手 立刻免费下载  MSDN 论坛好帮手
    2011年3月9日 2:24