100分求解!WinCE 5.0下使用timer计时器组件,想要实现pictureBox组件的动画效果,内存竟然不被释放掉,大家有没有碰到过这种情况?
下面是代码:private static int imageList_Search_Counter; //定义一个静态变量,用于记数,以便实现动画效果
private void timer_Tick(object sender, EventArgs e)
{
if (imageList_Search_Counter > 10)
{
imageList_Search_Counter = 0;
}
pictureBox.Image = imageList_Search.Images[imageList_Search_Counter];
imageList_Search_Counter = imageList_Search_Counter + 1;
}
这是我在WinCE 5.0下写在timer组件中的代码,可是当运行的时候,发现我的PDA内存消耗得很快,没过多久内存就被消耗光了,然后PDA就死机
我的目的是通过timer组件每200ms调用一次,变幻pictureBox中的图片,一共11幅图片,从而实现连续动画效果。
imageList_Search是imageList组件,里面已经在设计期装入了11幅图片,以备pictureBox切换使用。
就是上面这行代码:pictureBox.Image = imageList_Search.Images[imageList_Search_Counter];
但是,运行的时候,发现这行代码在timer事件代码中运行时,会把内存消耗光,怎么会这样?
我是在WinCE 5.0平台上运行的,上面的代码我实在看不出有内存泄漏的地方,请问大家怎么解决?是什么问题引起的?
谢谢!
--------------------编程问答-------------------- 帮你顶 --------------------编程问答-------------------- 如果imageList_Search_Counter不定义为static呢 --------------------编程问答-------------------- 断点调试下,看哪个地方使内存增加,才可判断问题所在 --------------------编程问答-------------------- 会不会是imageList 的代码有问题
把代码补全下吧 --------------------编程问答-------------------- 应该是这一段代码引起的
pictureBox.Image = imageList_Search.Images[imageList_Search_Counter];
把它放到timer里面一运行,要不了5分钟,我的PDA内存就没有了。
把它删掉之后再在PDA上运行,内存就没有增加了。
奇怪了!这样赋值应该没有问题啊,对象之间赋值只是改变引用指向吧,应该不存在复制对象的问题啊!哎,简直郁闷死了,PDA的WinCE系统、或是Compact Net Framework是不是有BUG啊!
或者是用在timer组件里面有什么特殊要求?
兄弟们要知道,PDA的可用内存一般都很小,我的只有20M,一般开发程序肯定是够了的,但是因为要在timer里面做,所以如果每一次定时200ms都消耗一次内存的话,几分钟不到,肯定死翘翘了! --------------------编程问答-------------------- 我也刚刚实现这个 但没遇到这种情况啊
补充:.NET技术 , C#