现在的位置: 首页 > 综合 > 正文

多线程的应用

2013年11月02日 ⁄ 综合 ⁄ 共 817字 ⁄ 字号 评论关闭

因为要做大批记录的处理,同时要监视处理进度,所以需要用到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值导致,改正后问题解决。

抱歉!评论已关闭.