在主线程里开启一个子线程,子线程执行完毕再回到主线程

 1 //载入滚动图,在主线程里开启一个子线程,子线程执行完毕再回到主线程
 2  private void loadThread()
 3         {
 4             circularProgress.Visible = true;
 5             circularProgress.IsRunning = true;
 6             Thread threadProcess = new Thread(new ParameterizedThreadStart(funtion));
 7             threadProcess.Start();
 8         }
 9 
10         private void funtion(object o)
11         {
12             for (int i = 1; i < 1000; i++)
13             {
14                 Console.WriteLine(i);
15             }
16 
17             if (base.InvokeRequired)
18             {
19                 base.Invoke(new Action(() =>
20                 {
21                      circularProgress.IsRunning = false;
22                      circularProgress.Visible = false; 
23                 }));
24             }
 1 //用委托
 2 // 定义一个委托实现回调函数
 3         public delegate void CallBackDelegate();
 4         CallBackDelegate callBackDelegate;
 5         private void loadThread()
 6         {
 7             circularProgress.Visible = true;
 8             circularProgress.IsRunning = true;
 9             callBackDelegate = new CallBackDelegate(stopCircularProgress);
10             Thread threadProcess = new Thread(new ParameterizedThreadStart(funtion));
11             threadProcess.Start();
12         }
13 
14         private void funtion(object o)
15         {
16             for (int i = 1; i < 1000; i++)
17             {
18                 Console.WriteLine(i);
19             }
20             this.Invoke(callBackDelegate);
21         }
22 
23         private void stopCircularProgress()
24         {
25             circularProgress.IsRunning = false;
26             circularProgress.Visible = false;  
27         }
原文地址:https://www.cnblogs.com/nullcodeworld/p/9923102.html