C#下任务执行“正在执行界面”设计
来源:互联网 发布:济南联通软件研究院 编辑:程序博客网 时间:2024/04/27 14:05
有时候遇到非常耗时的任务最好设计一个好友的界面让程序等待,我从网上查了一下据说backgroundworker和多线程都可以实现我找了一个简单的做法一会再看看backgroundworker把用法也总结一下贴出来方便大家使用!
直接上代码
有两个窗体一个窗体上只有一个button开始执行任务第二个窗体上有进度和当前耗时时间
form1代码:
using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;using System.Text;using System.Windows.Forms;using System.Threading;namespace CSharp获取进度{ public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void Btn_Start_Click(object sender, EventArgs e) { Form2 fm = new Form2(0, 100); fm.Show(this);//设置父窗体 fm.Fuction_SetMessage("任务开始执行"); DateTime dt_Start = DateTime.Now; for (int i = 1; i <= 100; i++) { DateTime dt_Now = DateTime.Now; TimeSpan ts = dt_Now.Subtract(dt_Start); fm.Fuction_SetMessage("任务正在执行,当前已用时间"+ts.Hours.ToString()+"小时"+ts.Minutes+"分"+ts.Seconds.ToString()+"秒"); fm.setPos(i);//设置进度条位置 Thread.Sleep(1000); } fm.Fuction_SetMessage("任务执行完成!"); } }}
form2代码:
using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;using System.Text;using System.Windows.Forms;namespace CSharp获取进度{ public partial class Form2 : Form { public Form2(int _Minimum, int _Maximum) { InitializeComponent(); progressBar1.Maximum = _Maximum;//设置范围最大值 progressBar1.Value = progressBar1.Minimum = _Minimum;//设置范围最小值 } /// <summary> /// 设置进度 /// </summary> /// <param name="value"></param> public void setPos(int value) { if (value < progressBar1.Maximum) { progressBar1.Value = value; label1.Text = (value * 100 / progressBar1.Maximum).ToString() + "%";//显示百分比 } else if (value == progressBar1.Maximum) { progressBar1.Value = value; label1.Text = (value * 100 / progressBar1.Maximum).ToString() + "%";//显示百分比 //已经到达百分之百这时候需要关掉百分比窗体切换到主窗体 this.Owner.Enabled = true; this.Close(); } Application.DoEvents(); } /// <summary> /// 设置窗体执行状态 /// </summary> /// <param name="Str_Message"></param> public void Fuction_SetMessage(string Str_Message) { this.Lbl_Message.Text = Str_Message; Application.DoEvents(); } private void Form2_Load(object sender, EventArgs e) { this.Owner.Enabled = false; } private void Form2_FormClosed(object sender, FormClosedEventArgs e) { this.Owner.Enabled = true; } }}
- C#下任务执行“正在执行界面”设计
- C# 定时执行任务
- C# 定时执行任务
- ESXI虚拟机任务正在执行中
- Quartz-中断正在执行的任务
- quartz 获取正在执行的任务
- Yii框架设计计划任务脚本+linux下crontab执行
- c#获取正在执行的函数名
- C#实现终止正在执行的线程
- C#窗体定时执行任务
- c#中任务工厂执行多线程任务
- LINUX下任务定时执行
- linux下执行定时任务
- Linux下执行定时任务
- linux下定时执行任务
- debian下执行定时任务
- mac下定时执行任务
- android欢迎界面并执行任务
- 服务端重启后,老报端口被占用问题解决
- hibernate实在是搞不懂啊 主从表这是要逆天么
- Linux进程控制
- asp.net 发送电子邮件的方法
- 生肖迷宫之福娃吃蛋糕问题
- C#下任务执行“正在执行界面”设计
- .tar.xz文件的解压
- UITableViewCell - UITableView中cell的边框和背景
- SGU_271_Book_Pile
- Linux查看机器开放的端口
- LinkedHashMap和HashMap的比较使用
- uboot中IDE移植
- Linux fork()函数学习
- Mybatis上路_01-基本流程