先来一个加载窗体代码
1 public partial class FrmLoading : Form 2 { 3 public BackgroundWorker updateDBWorker=new BackgroundWorker(); 4 5 public Action BackgroundWorkAction 6 { 7 get; 8 set; 9 } 10 11 public KeyValuePair<int, string> CurrentMsg 12 { 13 set 14 { 15 this.updateDBWorker.ReportProgress(value.Key, value.Value); 16 } 17 } 18 19 public FrmLoading() 20 { 21 InitializeComponent(); 22 this.updateDBWorker.WorkerReportsProgress = true; 23 this.updateDBWorker.WorkerSupportsCancellation = true; 24 this.updateDBWorker.DoWork += new DoWorkEventHandler(this.backgroundWorker1_DoWork); 25 this.updateDBWorker.ProgressChanged += new ProgressChangedEventHandler(this.backgroundWorker1_ProgressChanged); 26 this.updateDBWorker.RunWorkerCompleted += new RunWorkerCompletedEventHandler(this.backgroundWorker1_RunWorkerCompleted); 27 lblVer.Text = Properties.Resources.SystemVer; 28 } 29 30 31 public void ShowLog(string strLog, int intValue) 32 { 33 if (this.lblLog.InvokeRequired) 34 { 35 this.lblLog.BeginInvoke(new MethodInvoker(delegate() { ShowLog(strLog, intValue); })); 36 } 37 else 38 { 39 lblLog.Text = strLog; 40 this.progressBar1.Value = intValue; 41 } 42 } 43 44 private void FrmLoading_Load(object sender, EventArgs e) 45 { 46 this.updateDBWorker.RunWorkerAsync(); 47 } 48 49 private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e) 50 { 51 if (this.BackgroundWorkAction != null) 52 { 53 this.BackgroundWorkAction(); 54 } 55 Thread.Sleep(100); 56 if (base.InvokeRequired) 57 { 58 base.BeginInvoke(new MethodInvoker(delegate 59 { 60 base.Close(); 61 })); 62 } 63 else 64 { 65 base.Close(); 66 } 67 } 68 69 private void backgroundWorker1_ProgressChanged(object sender, ProgressChangedEventArgs e) 70 { 71 ShowLog((e.UserState == null) ? "" : e.UserState.ToString(), e.ProgressPercentage); 72 } 73 74 private void backgroundWorker1_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e) 75 { 76 } 77 }
界面就一个进度条,一个label,没其他东西
看调用的地方,Program文件里面
1 FrmLoading frmLoading = new FrmLoading(); 2 frmLoading.BackgroundWorkAction = delegate 3 { 4 try 5 { 6 //设置连接字符串 7 frmLoading.CurrentMsg = new KeyValuePair<int, string>(1, "正在初始化数据配置..."); 8 9 frmLoading.CurrentMsg = new KeyValuePair<int, string>(5, "正在初始化日志配置..."); 10 System.Threading.Thread.Sleep(200); 11 12 frmLoading.CurrentMsg = new KeyValuePair<int, string>(10, "正在升级本地数据..."); 13 14 frmLoading.CurrentMsg = new KeyValuePair<int, string>(50, "正在初始化本地参数..."); 15 16 frmLoading.CurrentMsg = new KeyValuePair<int, string>(85, "正在初始化热键信息..."); 17 18 frmLoading.CurrentMsg = new KeyValuePair<int, string>(90, "正在初始化硬件设备..."); 19 20 frmLoading.CurrentMsg = new KeyValuePair<int, string>(100, "初始化完成..."); 21 22 } 23 catch (Exception ex) 24 { 25 Application.Exit(); 26 Process.GetCurrentProcess().Kill(); 27 } 28 }; 29 frmLoading.ShowDialog(); 30 31 Application.Run(new form1());
好了 就这样了,没什么技术含量,就不贴图了,拿去用吧