因为要做大批记录的处理,同时要监视处理进度,所以需要用到thread,不过看到有资料说最好是用委托,不管它,先用用thread吧。
Thread th1 = new Thread(new ThreadStart(updatebookname));//定义一个thread类并用处理函数初始化
th1.Priority=ThreadPriority .BelowNormal ;//定义优先级
th1.Start();//开始线程
Thread th2 = new Thread(new ThreadStart(updateprogressbar));
th2.Priority = ThreadPriority.BelowNormal;
th2.Start();
线程中用到的函数与其他事件处理函数没有什么不同,只是加了一句Thread.Sleep(1),休眠一毫秒,作用是放弃控制权,让CPU处理其他事。
其中一个函数,显示处理进度:
private void updateprogressbar()
{
int i=1;
while (i <= this.progressBar1.Maximum)
{
this.progressBar1.Value = i++;
Thread.Sleep(1);
}
}
遇到的问题:程序正常退出后任务管理器中仍然发现有程序进程,可以手动结束,后来发现是其中一个线程代码有点问题,处于死循环,修改后问题解决。还有个问题是程序出现问题,弹出调试对话框,经检查发现是在进度条的处理中processbar的value超出其maxnum值导致,改正后问题解决。