首頁 > 後端開發 > C++ > 飛濺屏幕如何在關閉之前等待背景線程完成?

飛濺屏幕如何在關閉之前等待背景線程完成?

Barbara Streisand
發布: 2025-01-25 08:46:10
原創
972 人瀏覽過

How Can a Splash Screen Wait for a Background Thread to Finish Before Closing?

確保啟動畫面可見性,直到後台執行緒完成

本文詳細介紹如何建立一個在後台執行緒完成處理之前一直顯示的啟動畫面。 啟動畫面位於單獨的 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.RunShowDialog()來阻塞主線程,直到啟動畫面正常關閉:

<code class="language-csharp">[STAThread]
static void Main()
{
    using (var splashScreen = new SplashScreen(_tempAL))
    {
        splashScreen.Show();

        Application.Run(new Form1(_tempAL));
    }
}</code>
登入後複製

這種方法保證了啟動螢幕的可見性,直到後台執行緒 (GetFromServer) 結束其操作,從而帶來完美的使用者體驗。

以上是飛濺屏幕如何在關閉之前等待背景線程完成?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板