开发环境: WinForm, .net 2003 C#, FrameWork 1.1有一个查询按钮:
private void btnQuery_Click(object sender, System.EventArgs e)
{
ThreadStart entryPoint=new ThreadStart(QueryCER);
Thread QryTh=new Thread(entryPoint);
QryTh.Start();
}private void QueryCER()
{
    LView.Items.Clear();
    ListViewItem rItem=null;
    LView.ListViewItemSorter =null;    for (j=1;j<100;j++)
    {
rItem=new ListViewItem("A" + j.ToString());
for(i=1;i<5;i++) rItem.SubItems.Add(i.ToString());  this.Text ="(FILL: " + j.ToString()  +" )";
          //注:LView是ListView控件
LView.Items.Add(rItem);
    }
}为什么在第一次点查询按钮时,填充第一条记录时,要花很长的时间,大概要2秒钟左右,而其后的则很快.
以后再点查询按钮,是很会,而很少出现象第一次点查询按钮时填充第一条记录的等待现象?这是什么原因呀?

解决方案 »

  1.   

    因为你头一次需要在QueryCER()
    中new 99个ListViewItem
      

  2.   

    上面给的数据只是测试,实际是从数据库中查询出来的数据.我测试过,不管查询的数据,还是添加静态的字符,是在Listview1.Add(..)时慢,太概要花2秒钟左右,不知道是不是微软的BUG.
    并且,只是增加第一条记录时慢.不是头一次new 99个ListViewItem的问题,不用线程,就没有这回事.用线程,以后再清空列表添加,又不回出现这种现象.不过,不影响程序,只是好奇,想知道一下是怎么回事.