確保啟動畫面可見性,直到後台執行緒完成
本文詳細介紹如何建立一個在後台執行緒完成處理之前一直顯示的啟動畫面。 啟動畫面位於單獨的 SplashScreen
類別中,出現在主申請表之前。
SplashScreen
類別包含一個方法 GetFromServer
,模擬伺服器資料檢索和處理。該方法在單獨的執行緒上運行,允許主執行緒同時顯示啟動畫面。 同步對於防止啟動畫面過早關閉至關重要。
為了實現這種同步,使用了ManualResetEvent
:
<code class="language-csharp">private ManualResetEvent _threadFinished = new ManualResetEvent(false); private void GetFromServer() { // ... (Existing GetFromServer method code) ... // Signal thread completion _threadFinished.Set(); }</code>
DisplaySplash
類別中的SplashScreen
方法修改為等待執行緒完成後再隱藏閃屏:
<code class="language-csharp">private void DisplaySplash() { // ... (Existing DisplaySplash method code) ... // Wait for thread completion _threadFinished.WaitOne(); // ... (Code to hide the splash screen) ... }</code>
最後,Main
方法啟動啟動畫面,並在主窗體上使用Application.Run
和ShowDialog()
來阻塞主線程,直到啟動畫面正常關閉:
<code class="language-csharp">[STAThread] static void Main() { using (var splashScreen = new SplashScreen(_tempAL)) { splashScreen.Show(); Application.Run(new Form1(_tempAL)); } }</code>
這種方法保證了啟動螢幕的可見性,直到後台執行緒 (GetFromServer
) 結束其操作,從而帶來完美的使用者體驗。
以上是飛濺屏幕如何在關閉之前等待背景線程完成?的詳細內容。更多資訊請關注PHP中文網其他相關文章!