我已经获得了一个用.Net CF 3.5编写的Windows Mobile应用程序来修复,其中一个问题与存储有关。
消息“没有足够的存储空间可用于完成此操作”已出现几次 - 它已记录在SQL CE数据库中,并且始终在数据访问期间发生(但不是相同的数据访问位)。
我有点困惑的是这是指程序存储器(例如RAM)还是存储器(例如永久存储器)。它似乎是存储内存,但设备似乎有很多免费。虽然有一些OutOfMemoryExceptions,但这些看起来与此问题完全无关(因为与图像相关的问题会在不同的时间发生)。
我们将SQL CE 3.5与单个连接一起使用,该连接与应用程序一起存储在设备上(而不是存储卡)。该设备是运行Windows Mobile 6.1的Motorola MC75。
有什么想法吗?
答案 0 :(得分:8)
这是一个低级Windows错误,代码14,ERROR_OUTOFMEMORY。错误消息没有提到“内存”,因为它并不总是由内存不足引起的。最典型的触发器是超出其内核资源配额的程序。像10,000个窗口手柄一样,还有很多其他的。这对于桌面版btw来说,我不怀疑它在Windows Mobile上要低得多。
嗯,这个程序很小便。触发此错误的一种可能方法是不对实现IDisposable的类的对象调用Dispose()。这将消耗在垃圾收集器和终结器线程运行之前不会释放的内核资源。这可能需要一段时间。 SQL CE类肯定是候选者。如果您不知道资源泄漏或过度使用的来源,那么请投资一个适用于CF的分析器。
答案 1 :(得分:0)
分配了多少虚拟内存?如果可能的话,尝试增加值。
答案 2 :(得分:0)
我不知道这是否也适用于MC75,但是在Start->Settings->Control Panel->System
上应该有一个Memory选项卡,您可以在其中调整可用RAM的内存量,以及保留多少内存文件。
这不适用于\ Permanent Storage文件夹(或\ Storage Card,因为它在我们的设备上调用),但不适用于其他文件夹,例如\ Temp。