Rumah >pembangunan bahagian belakang >C++ >Bagaimanakah skrin percikan menunggu benang latar belakang selesai sebelum ditutup?
Memastikan Keterlihatan Skrin Percikan Sehingga Thread Latar Belakang Selesai
Artikel ini memperincikan cara membuat skrin percikan yang kekal dipaparkan sehingga utas latar belakang selesai diproses. Skrin percikan, berada dalam kelas SplashScreen
yang berasingan, muncul sebelum borang permohonan utama.
Kelas SplashScreen
menggabungkan kaedah, GetFromServer
, mensimulasikan pengambilan dan pemprosesan data pelayan. Kaedah ini berjalan pada benang yang berasingan, membenarkan benang utama memaparkan skrin percikan serentak. Penyegerakan adalah penting untuk mengelakkan skrin percikan ditutup lebih awal.
Untuk mencapai penyegerakan ini, ManualResetEvent
digunakan:
<code class="language-csharp">private ManualResetEvent _threadFinished = new ManualResetEvent(false); private void GetFromServer() { // ... (Existing GetFromServer method code) ... // Signal thread completion _threadFinished.Set(); }</code>
Kaedah DisplaySplash
dalam kelas SplashScreen
diubah suai untuk menunggu urutan selesai sebelum menyembunyikan skrin percikan:
<code class="language-csharp">private void DisplaySplash() { // ... (Existing DisplaySplash method code) ... // Wait for thread completion _threadFinished.WaitOne(); // ... (Code to hide the splash screen) ... }</code>
Akhir sekali, kaedah Main
memulakan skrin percikan dan menggunakan Application.Run
dengan ShowDialog()
pada borang utama untuk menyekat utas utama sehingga skrin percikan ditutup dengan anggun:
<code class="language-csharp">[STAThread] static void Main() { using (var splashScreen = new SplashScreen(_tempAL)) { splashScreen.Show(); Application.Run(new Form1(_tempAL)); } }</code>
Pendekatan ini menjamin keterlihatan skrin percikan sehingga urutan latar belakang (GetFromServer
) menamatkan operasinya, menghasilkan pengalaman pengguna yang digilap.
Atas ialah kandungan terperinci Bagaimanakah skrin percikan menunggu benang latar belakang selesai sebelum ditutup?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!