多线程的应用

为了处理大量记录并实时监控进度,本文采用多线程技术。通过创建两个线程分别更新书籍名称和进度条,设置线程优先级并确保线程间协作。在更新进度条的线程中,使用Thread.Sleep避免占用过多CPU资源。在实际运行中,曾遇到线程死循环和进度条值越界导致的问题,经过调试和修正已成功解决。
摘要由CSDN通过智能技术生成

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值