2016-12-16 31 views
-2

我在C#中有一個winform應用程序,必須在第一次運行時創建一個SQLLocalDB實例。 我看到這個過程在一些較舊的PC上花費了一些時間,一些用戶認爲該應用程序崩潰了。 我創建了一個splashscreen窗體,讓用戶知道應用程序正在創建實例,但我不知道當流程結束並關閉splashscreen時我無法檢查。檢查進程結束以關閉splashscreen

我有一個class用下面的代碼來創建實例:

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(); 
} 

任何人都可以點我在正確的方向嗎? 在此先感謝。

+0

鉤住process進程對象的'Process.Exited'事件。 –

+2

[C#process.start可能的重複,我怎麼知道過程是否結束?](http://stackoverflow.com/questions/12273825/c-sharp-process-start-how-do-i-know-if - 處理結束) –

+1

@Manfred Radlwimmer嗨,我看到你標記爲重複的問題。當然,這篇文章有助於解決方案,但要說這是一個重複的過程。無論如何,這有助於幫助 – septaug

回答

0

你可以使用:

process.WaitForExit(); 

但要注意,它會阻止您的GUI線程。你可以在不同的線程上啓動這個進程,所以你的GUI不會被阻塞。