2
我嘗試在線程退出時打開新的子窗體(BuyNow窗體),並確定許可證類型已過期。在一個線程中,我打開一個新的進程,執行許可證計算並將信息發送回主進程。問題是,在收到所有信息之前退出線程,因此我無法打開BuyNow表單,因爲它不知道許可證已過期。在線程中打開新的子窗體
這是代碼:
BackgroundWorker BW = new BackgroundWorker();
BW.DoWork += (sender, e) =>
{
Process.Start("LicenseManager.exe", "-Check");
// PSI Info, DataRecieved Event Args and etc.. included in Process.
// Opens the process which takes about 5 second to calculate and post
// license information. Then LicenseMode changes to TrialExpired
// if not activated and trial expired.
};
BW.RunWorkerCompleted += (sender, e) =>
{
// This never gets executed because License is not changed to TrialExpired by the time BW is completed.
if (LicenseMode == License.TrialExpired)
{
new BuyNowForm().Show();
}
};
BW.RunWorkerAsync();
我試圖打開BuyNowForm而在一個線程但凍結新創建的窗體。我不想嘗試Thread.Sleep,並等待進程發送信息的額外時間。 Thread.Join()似乎凍結了幾秒主界面。 Process.Exited + =也不起作用,因爲進程是在線程中創建的,所以當它退出時,BuyNowForm仍然在線程中創建。
你們能想到什麼?
天啊!我一直在想這麼多,我忽略了最簡單的解決方案大聲笑。非常感謝你的幫助(: - 解決了問題,將在10分鐘內「接受」(要求) – JonJon2244
只需更新,我也可以通過調用它來打開它,這將修復凍結錯誤。 – JonJon2244