【NCRE】--- 多线程显示进度条
来源:互联网 发布:身体去角质 知乎 编辑:程序博客网 时间:2024/05/18 01:06
从软考完就正式 的开始了我们计算机一级的开发,周洲把 word这个大的模块交给我,刚开始的时候感觉还是挺难的,好多的属性找不到,因此也就好多的代码不会写!可是黄天不负有心人,经过师哥的指导,加上自己的悟性,代码这一块也可以说解决了大部分的难题!
到2个星期前,一直有一个待解决的问题就是:判分的时候用到了进度条!所以我就在敲代码闲下来的时候研究了一下这个进度条。可是我写的进度条是由timer控件控制的,所以单个显示的时候没有问题,但是想要它一边判分一边滚动就有难度了!
可是上个星期,让海滨师哥给我解决另一个问题的时候就顺便解决了这个问题,真是不得不感慨一下:做项目多了就是思路广啊!一下子就想到了用多进程!
接下来就是代码:
先新建一个窗体,里面放上进度条,设置进度条的各种属性:
如下:
接下来是进度条窗体的代码:
public partial class frmWaitting : Form { public frmWaitting(System.ComponentModel.BackgroundWorker worker) { InitializeComponent(); worker.ProgressChanged += new ProgressChangedEventHandler(worker_ProgressChanged); worker.RunWorkerCompleted += new RunWorkerCompletedEventHandler(worker_RunWorkerCompleted); } private void label2_Click(object sender, EventArgs e) { } void worker_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e) { this.Close(); } void worker_ProgressChanged(object sender, ProgressChangedEventArgs e) { //lblStatus.Text = "数据加载中..."; }}
这是整个判分窗体的逻辑:
public partial class FrmJudge : Form { BackgroundWorker worker; public static Form frmjudge; public static frmxuanfukuang xuanfu; public FrmJudge() { InitializeComponent(); worker = new BackgroundWorker(); worker.DoWork += new DoWorkEventHandler(worker_DoWork); worker.RunWorkerCompleted += new RunWorkerCompletedEventHandler(worker_RunWorkerCompleted); frmjudge = this; } #region 异步 开始事件 /// <summary> /// 异步 开始事件 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void worker_DoWork(object sender, DoWorkEventArgs e) { #region 进行评分操作 2015年12月14日13:52:43 李少然 string studentID; studentID = MyInfo.MystudentID(); #region Word判分 2015年11月23日 WordQuestionEntityBLL wordquestionbll = new WordQuestionEntityBLL(); WordQuestionEntity wordinfo = new WordQuestionEntity(); StudentInfoEntity studentinfo = new StudentInfoEntity(); wordinfo.PaperType = MyInfo.MyPaperType(); switch (MyInfo.MyPaperType().Trim()) { case "A": //判断表格C是否存在 string filePath = @"D:\计算机一级考生文件\Wordkt\bgA.docx"; if (MyInfo.exitsDoc(filePath)) { WordAQuestionFlag wordquestionflag = new WordAQuestionFlag(); wordquestionflag.SwitchQuestionFlag(wordinfo); } break; case "B": //判断表格C是否存在 string filePathB = @"D:\计算机一级考生文件\Wordkt\bgB.docx"; if (MyInfo.exitsDoc(filePathB)) { WordBQuestionFlag wordBquestionflag = new WordBQuestionFlag(); wordBquestionflag.SwitchQuestionFlagB(wordinfo); } break; case "C": //判断表格C是否存在 string filePathC = @"D:\计算机一级考生文件\Wordkt\bgC.docx"; if (MyInfo.exitsDoc(filePathC)) { WordCQuestionFlag wordCquestionflag = new WordCQuestionFlag(); wordCquestionflag.SwitchQuestionFlagC(wordinfo); } break; case "D": //判断表格C是否存在 string filePathD = @"D:\计算机一级考生文件\Wordkt\bgD.docx"; if (MyInfo.exitsDoc(filePathD)) { WordDQuestionFlag wordDquestionflag = new WordDQuestionFlag(); wordDquestionflag.SwitchQuestionFlagD(wordinfo); } break; case "E": //判断表格C是否存在 string filePathE = @"D:\计算机一级考生文件\Wordkt\bgE.docx"; if (MyInfo.exitsDoc(filePathE)) { WordEQuestionFlag wordEquestionflag = new WordEQuestionFlag(); wordEquestionflag.SwitchQuestionFlagE(wordinfo); } break; case "F": //判断表格C是否存在 string filePathF = @"D:\计算机一级考生文件\Wordkt\bgF.docx"; if (MyInfo.exitsDoc(filePathF)) { WordFQuestionFlag wordFquestionflag = new WordFQuestionFlag(); wordFquestionflag.SwitchQuestionFlagF(wordinfo); } break; case "G": //判断表格C是否存在 string filePathG = @"D:\计算机一级考生文件\Wordkt\bgG.docx"; if (MyInfo.exitsDoc(filePathG)) { WordGQuestionFlag wordGquestionflag = new WordGQuestionFlag(); wordGquestionflag.SwitchQuestionFlagG(wordinfo); } break; case "H": //判断表格C是否存在 string filePathH = @"D:\计算机一级考生文件\Wordkt\bgH.docx"; if (MyInfo.exitsDoc(filePathH)) { WordHQuestionFlag wordHquestionflag = new WordHQuestionFlag(); wordHquestionflag.SwitchQuestionFlagH(wordinfo); } break; default: break; } TypeSumFrationBLL typesumfration = new TypeSumFrationBLL(); typesumfration.WordSumFration(studentID); //MessageBox.Show("word判分成功!"); //txtMsg.Text += "\r\nword判分成功!"; } #endregion #region 异步执行完成后 /// <summary> /// 事件: 异步执行完成后 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void worker_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e) { //显示图片 MessageBox.Show("评分完成", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information); frmjudge.Hide(); } #endregion private void FrmJudge_Load_1(object sender, EventArgs e) { worker.RunWorkerAsync(); //显示进度窗体 frmWaitting frm = new frmWaitting(this.worker); frm.StartPosition = FormStartPosition.CenterScreen; frm.ShowDialog(this); } }
最后的显示效果,和你选择的进度条的属性是相关的,可是却可以随着判分而随时的显示,如下:
小总:
自己在研究进度条的时候根本没有想到要用多进程来控制,可是师哥却是“看到即想到”,这就是经验,希望自己将来也能和师哥一样优秀!多谢师哥的帮忙,可是自己也要多加努力啊!fighiting!
1 0
- 【NCRE】--- 多线程显示进度条
- 多线程显示进度条
- 多线程进度条显示
- NCRE。。。。。。
- wpf使用多线程来显示进度条
- 多线程copy文件,另加进度条显示
- 关于多线程执行显示进度条的实例
- 关于多线程执行显示进度条的实例!
- 多线程下载更新包并显示进度条
- 多线程断点续传显示进度条和百分比
- 多线程进度条
- 多线程进度条
- 利用多线程让没有窗口的程序显示进度条
- 利用WinInet和多线程实现实时显示的下载进度条
- [转]关于VC下多线程和进度条实时显示
- VB.NET读取数据库时多线程显示进度条
- android 模拟listview多线程下载进度条显示不干扰
- Android多线程+单线程+断点续传+进度条显示下载
- 第15周项目2-用哈希法组织关键字
- 第十六周-英文单词的基数排序
- 第十六周项目1-验证算法(4)快速排序
- 第十周项目3利用二叉树遍历解决问题(计算二叉树节点个数)
- 第4周—项目5 猴子选大王
- 【NCRE】--- 多线程显示进度条
- 十一周 项目一 二叉树算法验证(1)
- 第十五周 用哈希表组织关键字 线性探索法
- 第十六周项目1-验证算法(2)希尔排序
- 第16周外部排序之【项目2】败者树归并模拟
- 第十五周项目1 验证算法
- 十六周 归并排序算法的改进
- Windows server 2008 r2安装说明
- 【万字总结】图解堆算法、链表、栈与队列(多图预警)