多线程之进度条

建立一个公用的进度条控件,每次加载较慢的时候使用以改进用户体验。

通过启用新线程的方式来进行调用。

步骤如下:

  1. 建立一个单独的窗体,包含一个进度条控件
    • 设置进度条的Style为ProgressBarStyle.Marquee
    • 增加一属性(LoadCompleted)标示加载是否完成
  2. 在其它窗体中通过开启新线程进行调用
View Code
 1  public partial class UcLoadData_ShowMarqueeProcess : UserControl
 2     {
 3         public static FrmMarqueeProcess xf;
 4         public static event EventHandler onLoadFinished;
 5 
 6         public UcLoadData_ShowMarqueeProcess()
 7         {
 8             InitializeComponent();
 9         }
10 
11         private void btnFill_Click(object sender, EventArgs e)
12         {
13             int iEnd = 10000;
14             Thread t = new Thread(new ThreadStart(ShowProcess));
15             t.Start();
16 
17             for (int i = 0; i < iEnd; i++)
18             {
19                 string strContent = string.Format("this is the {0}th record", i);
20                 this.lstContent.Items.Add(strContent);
21             }
22 
23             onLoadFinished += new EventHandler(LoadFinish);
24             if (onLoadFinished != null)
25                 onLoadFinished.Invoke(sender, e);
26 
27             while (!xf.LoadCompleted)
28                 Application.DoEvents();
29 
30             t.Abort();
31         }
32         private static void ShowProcess()
33         {
34             xf = new FrmMarqueeProcess();
35             xf.ShowDialog();
36         }
37 
38         private static void LoadFinish(object sender, EventArgs e)
39         {
40             xf.LoadCompleted = true;
41         }
42     }

    3. 运行结果如下

原文地址:https://www.cnblogs.com/markhe/p/3068094.html