在主線程里開啟一個子線程,子線程執行完畢再回到主線程


 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         }

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM