当前位置:  开发笔记 > 编程语言 > 正文

Windows Mobile中的.net Out of Memory异常 - 如何解决这个问题?

如何解决《WindowsMobile中的.netOutofMemory异常-如何解决这个问题?》经验,为你挑选了1个好方法。

我目前正在使用CF.NET在Windows Mobile中编写一个小应用程序.

该应用程序的行为与电子邮件应用程序非常相似,即我使用POP3从我的邮件服务器帐户下载邮件和附件,以存储在存储卡上,以便使用MIME工具进行进一步处理.

我的问题是下载大型附件,因为在某个时刻我得到一个OutOfMemory异常.我在前几天阅读了这里发布的以下问题和答案,从中发现了一些有趣的事情.由于我的附件可达4-5MB(mp3歌曲),我意识到我有严重的问题.然而,同时Pocket Outlook能够下载高达4-5MB的mp3歌曲而没有任何问题(使用WIFI连接)所以必须有办法做到这一点!

目前,我将下载缓冲区(转换为字符串)保存为一个简单的字符串变量.我尝试将缓冲区的内容添加到stringbuilder中,但我仍然得到OutOfMemory-exceptions.

我可以采取什么策略/技术来克服这个问题?



1> Clyde..:

每当您处理大量数据时,您都希望确保不会立即将整个内容保存在内存中.

您下载的管道是一个流,因此您可以以块的形式加载数据.将文件写入磁盘时,您有一个流,因此您可以一次写入一个块.

想一下将拖拉机拖车卸入仓库.使用你的stringbuilder解决方案,你基本上会说,"我将站在预告片的后面,我希望你把拖车的全部内容装到我的怀里,然后我会把它带进仓库" .你会受到负荷的压迫!你想要的是,"把我交给我,实际上我可以随身携带,然后我将它带入仓库,然后回来进行下一次加载".

推荐阅读
mobiledu2402851377
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有