日期:2014-05-16 浏览次数:20846 次
我的程序结构就是这样的,如果查询的结果数量不多(几十条结果)时,就很快加载完毕,但是结果数量很多(结果数量在几百条)时,就会出现界面卡死,任务管理器显示CPU达到50%,而且要过很久才会加载完毕显示正常。
private BackgroundWorker search = new BackgroundWorker();
private void searchKey(object sender, EventArgs e)
{
this.listView.Items.Clear();
this.listView.BeginUpdate();
this.search.RunWorkerAsync();
}
private void searchKey(object sender, DoWorkEventArgs e)
{
/*这里是一些查询步骤省略,下面用一个FOR来说明一下我查询到很多结果*/
for(int i=0;i<2000;i++)/*现在我的问题结果数量越大,越会卡的时间长*/
{
string[] list = new string[6];
list[0]="a";
list[1]="b";
list[2]="c";
list[3]="d";
list[4]="e";
list[5]="f";
this.search.ReportProgress(i, list);
}
}
private void search_DoWork(object sender, DoWorkEventArgs e)
{
searchKey(sender, e);
}
private void search_ProgressChanged(object sender, ProgressChangedEventArgs e)
{
string[] list = e.UserState as string[];
ListViewItem lv = new ListViewItem(new string[] { list[1], list[2], list[3], list[4] });
lv.ImageKey = list[0];
lv.Tag = list[5];
this.listView.Items.Add(lv);
}
private void search_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
{
this.listView.EndUpdate();
}