当前位置:编程学习 > C#/ASP.NET >>

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#
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,