我用WPF写了一个程序,有一定的复杂程度,因为有大量(几千张)的图片,为了保证程序运行时的流畅,我在程序启动时把所有的图片用多线程预加载到了内存,这样用户在使用时没有任何迟钝的感觉,虽然内存占用较高,但是所有的功能都可以正常运行。问题是:把程序闲置一段时间(20分钟以上),没有任何操作之后,当再次点击上面的按钮或者图片时,程序就出现无响应,崩溃的问题了!自我感觉是内存被系统回收的原因,我做.net不久,没头绪啊!如果有时间,恳请各位帮我解答一下,十分感激!
好像List什么的有一个VirtualXXX的属性,意思是显示的时候才加载.
可能是程序占用的内存太大(加载了几千张图片)。一段时间不用后,加载进内存的东西可能被系统通过内存换页换到硬盘上。
重新点击按钮和图片时,需要从硬盘上加载图片资源,反应比较慢导致程序无响应。
比如visaul studio如果长时间打开不用,再点击其上的菜单后工具时也会假死。
我觉得解决这个问题,最好是使每个按钮或图片的点击,不会带来太大的数据量,按需加载。
希望对你有些帮助!