2016-12-16 1 views
-2

Ich habe eine Winform-App in C# mit muss eine SQLLocalDB-Instanz beim ersten Lauf zu erstellen. Ich sah, dass dieser Prozess einige Zeit in einigen älteren PCs dauerte und einige Benutzer dachten, dass die App abgestürzt war. Ich habe ein Splashscreen-Formular erstellt, das dem Benutzer mitteilt, dass die App die Instanz erstellt, aber ich weiß nicht, wie ich überprüfen kann, wann der Prozess beendet wurde, und den Splashscreen schließen.check für Prozessende zu schließen Splashscreen

Ich habe ein class mit dem folgenden Code die Instanz zu erstellen:

static private void ExecCmdInstance() 
{ 
    System.Diagnostics.Process process = new System.Diagnostics.Process(); 
    System.Diagnostics.ProcessStartInfo startInfo = new System.Diagnostics.ProcessStartInfo(); 
    startInfo.WindowStyle = System.Diagnostics.ProcessWindowStyle.Hidden; 
    startInfo.FileName = "cmd.exe"; 
    startInfo.Arguments = "/c sqllocaldb create MSSQLLocalDB -s"; 
    process.StartInfo = startInfo; 
    process.Start(); 
} 

Kann mir jemand in die richtige Richtung weisen bitte? Vielen Dank im Voraus.

+0

Hängen Sie das 'Process.Exited' -Ereignis Ihres' process' -Objekts ein. –

+2

Mögliches Duplikat von [C# process.start, woher weiß ich, ob der Prozess beendet wurde?] (Http://stackoverflow.com/questions/12273825/c-sharp-process-start-how-do-i-know-if -the-process-ended) –

+1

@Manfred Radlwimmer hi, ich sehe, dass du die Frage als duplikat markiert hast. Sicher, der Beitrag hilft bei der Auflösung, aber zu sagen, es ist ein Duplikat ist eine Strecke. Danke trotzdem, es hilft – septaug

Antwort

0

könnten Sie verwenden:

process.WaitForExit(); 

aber bewusst sein, dass es Ihre GUI-Thread blockiert. Sie können den Prozess in einem anderen Thread starten, damit Ihre GUI nicht blockiert wird.