我用的是visualstudio  c#语言编写下面一段程序
当没有while循环时,listView1.Items[0].SubItems.Add(DateTime.Now.ToString()) 就不出错
有while循环时就出错“集合已经达到其最大容量。”
那位高手能帮忙解答一下?不胜感激!(循环语句是一定得用的)
                while (isrun == 0)
                    {
                    if (listView1.Items.Count != 0)
                    {
                            listView1.Items[0].SubItems.Add(DateTime.Now.ToString());
                        listView1.Items[0].SubItems.Add("1");
                        if (Convert.ToInt32(listView1.Items[0].SubItems[1].Text) > timer1.Interval)
                        {
                            timer1.Start();                        }
                        else
                        {
                            timer4.Interval = Convert.ToInt32(listView1.Items[0].SubItems[1].Text);
                            timer4.Start();
                        }                    }
                  }

解决方案 »

  1.   

    isrun==0;
    isrun的值是什么啊
    搞不好是死循环了。
    问题出在isrun的值上
      

  2.   

    楼主把前面申明的变量这些写出来,还有你的那个isrun是计算什么的,为什么给它附值为0;
      

  3.   

    我又有了一个新问题,如果代码执行到timer,timer1.inteval我设为2s,程序会间隔2s后才继续循环吗?我一开始是这样想的。isrun是一个静态变量,在timer1和timer4里都有用到,意思就是当timer在执行时,我就把isrun的值设为1,当timer执行完,就再把isrun设为0,这样就可以保证在timer执行完后才进行循环。但是错误提示是在程序循环第一次的时候就弹出了,根本连一次循环都还没执行完呢。
      

  4.   

    这是我timer1事件里的代码
                  isrun = 1;           
                listView1.Items[0].Remove();
                timer1.Enabled = false;
                isrun = 0;
      

  5.   

    public static int isrun=0;
      

  6.   

    Timer应该和你的主程序不是一个线程,在循环中启动Timer没见过
      

  7.   

    timer1事件里的代码我没有贴全,timer1就是要把列表一里的第一条记录移到列表二里,并删除列表一里该条记录。
      

  8.   

    我是在做一个多级调度算法的模拟实验。listview1就是一级就绪队列,listview2就是二级就绪队列,还有一个listview3是第三极。每隔2秒钟就把一个进程(也就是一条记录)从一级队列移到二级队列。当一级队列空了之后,每隔4秒钟把一个进程从二级队列移到三级队列。
    所以我需要不断地循环,判断一级队列是否为空,不空就移动记录。每次循环移动一条记录。
      

  9.   

    程序的下面还有几个elseif,当所有的列表都为空的时候就跳出循环