2012-10-31 26 views
0

有沒有辦法在後臺線程中顯示錶單,但是您可以在UI線程之前始終將其視爲無模式?如何在UI線程無模式的背景線程中顯示Dialog?

例如,UI線程與parentForm一起運行,並且有一個backgroundworker線程在頂部與childForm一起運行。我可以使用帶有childForm的parentForm放在無模式上,這意味着我總是可以看到我的childForm,但不會阻止我的parentForm。

看來childForm.ShowDialog(parentForm)會阻塞UI線程,我不想在UI線程中調用childForm。

+1

可以顯示()的形式和最頂層設置爲true。 – Blorgbeard

+0

謝謝,但它會頂部所有的窗口不僅主要的UI線程? –

回答

1

我不知道你是什麼意思,但你總是可以嘗試一個特定的形式中運行Show(),如果你想顯示的形式,而不會阻塞主UI

Form2 _Form2 = new Form2(); 
_Form2.Show(); 

或者,如果您希望異步運行新窗體作爲應用程序的主窗體,則可以嘗試創建一個新的Thread並運行其中的窗體

public void RunThread() 
{ 
    Thread thread = new Thread(new ThreadStart(RunForm)); //Create a new thread to execute RunForm() 
    thread.Name = "NewForm"; //Name the new thread (Not required) 
    thread.Start(); //Start executing RunForm() in the new thread 
} 

public void RunForm() 
{ 
    try 
    { 
     Application.Run(new Form2()); //Run Form2() as the main form of the application 
    } 
    catch (Exception ex) 
    { 
     //DoSomething 
     //MessageBox.Show(ex.Message);  
    } 
} 

謝謝,
我希望對您有所幫助:)

+0

抱歉沒有說清楚。兩個線程都獲得了頂部的表單,並且我想從主UI線程頂部的背景創建一個表單。 –