Gewährleistung der Sichtbarkeit des Begrüßungsbildschirms bis zum Abschluss des Hintergrundthreads
In diesem Artikel erfahren Sie, wie Sie einen Begrüßungsbildschirm erstellen, der angezeigt bleibt, bis ein Hintergrundthread die Verarbeitung abgeschlossen hat. Der Begrüßungsbildschirm, der sich in einer separaten SplashScreen
-Klasse befindet, erscheint vor dem Hauptantragsformular.
Die SplashScreen
-Klasse enthält eine Methode GetFromServer
, die den Abruf und die Verarbeitung von Serverdaten simuliert. Diese Methode wird in einem separaten Thread ausgeführt, sodass der Hauptthread gleichzeitig den Begrüßungsbildschirm anzeigen kann. Die Synchronisierung ist entscheidend, um zu verhindern, dass der Begrüßungsbildschirm vorzeitig geschlossen wird.
Um diese Synchronisierung zu erreichen, wird ein ManualResetEvent
verwendet:
<code class="language-csharp">private ManualResetEvent _threadFinished = new ManualResetEvent(false); private void GetFromServer() { // ... (Existing GetFromServer method code) ... // Signal thread completion _threadFinished.Set(); }</code>
Die Methode DisplaySplash
in der Klasse SplashScreen
wurde so geändert, dass sie auf den Abschluss des Threads wartet, bevor der Begrüßungsbildschirm ausgeblendet wird:
<code class="language-csharp">private void DisplaySplash() { // ... (Existing DisplaySplash method code) ... // Wait for thread completion _threadFinished.WaitOne(); // ... (Code to hide the splash screen) ... }</code>
Schließlich initiiert die Main
-Methode den Begrüßungsbildschirm und verwendet Application.Run
mit ShowDialog()
im Hauptformular, um den Hauptthread zu blockieren, bis der Begrüßungsbildschirm ordnungsgemäß geschlossen wird:
<code class="language-csharp">[STAThread] static void Main() { using (var splashScreen = new SplashScreen(_tempAL)) { splashScreen.Show(); Application.Run(new Form1(_tempAL)); } }</code>
Dieser Ansatz garantiert die Sichtbarkeit des Begrüßungsbildschirms, bis der Hintergrundthread (GetFromServer
) seine Vorgänge abschließt, was zu einem ausgefeilten Benutzererlebnis führt.
Das obige ist der detaillierte Inhalt vonWie kann ein Begrüßungsbildschirm darauf warten, dass ein Hintergrundthread beendet wird, bevor er geschlossen wird?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!