本帖最后由 viki117 于 2012-03-08 16:21:19 编辑

解决方案 »

  1.   

    和单线程和内存有啥关系,起线程那段根本就没有执行到,在上面就 continue了,可是内存确在增加。。只要去了起线程那段,就正常了;问题就在这里,循环的时候压根就没有起线程,因为所有的队列都空的内存为什么会涨?
      

  2.   

    continue并不代表循环结束了,而是进行下一次循环然后在continue再循环,
    你确定while (ThreadStatus.thread_running == m_status)在第一次continue后就结束循环了吗?
      

  3.   


    我至于那么山寨吗,断点过了,messagebox过了,确定没有执行到开启线程那里,上面是判断3个队列是否有数据,没有就直接continue了...
      

  4.   

    会不会是release版本,由于编译器优化,而造成无视continue而预加载后继代码.
      

  5.   

    Debug下的,而且就算是release下,也不会优化出现无视continue的问题,代码没有执行,但的确有可能是加载了,而且用了匿名委托,极有可能是加载了不少自动生成的的代码.
      

  6.   

    楼主的问题,挺幽默的!!!——理论上,理想主义的想法是: 一段代码都没有执行到,就不应该 吃内存的!!会不会是 匿名函数的 重新运行编译造成的!!毕竟:实名函数 和 匿名函数 的 最大区别,就在于,匿名函数 的实际结构是不确定的!!
    而 实名函数 的实际结构是 确定的(实名函数代码确定)!————————————————————————————————————————
    比如:
    public List<T> AAAA(int id)
    {
        List<T> list=总数据.FindAll(x=>{x.Id==id });
        return list;
    }这个里面的匿名函数   x=>{x.Id==id }   是不确定的: id  是不确定的,且这个id  不是 函数参数!!
    假如我是编译器,我处理时:AAAA(3)  我就编译成  (x)=>{x.Id==3 }
    AAAA(4)  我就编译成  (x)=>{x.Id==4 }会不会是,这个地方 编译时的匿名函数结构 占用了内存??!!!————————————————————————————————————————
    而楼主  修改后,因为  实名函数 的结构固定,编译器不会二次分析函数结构,分配内存,所以 就只吃一次内存就足够??!!————————————————————————————————————————等待高手,给出更具有信服力的 解释!!!