2014-10-18 49 views
0

我試圖打開新窗口與線程和任務構成,但是這個代碼打開新窗口,但不顯示上的按鈕,文本框等(形式加載)線程和任務

private void newFomrm_Click(object sender, EventArgs e) 
{ 
    NewForm a = new NewForm(param); // my Form 
    Action showMethod =() => { a.Show(); }; 
    Task t1 = new Task(showMethod); 
    Thread t = new Thread(new ThreadStart(t1.Start)); 
    t.Start(); 
} 
+0

爲什麼你需要一個'Task'呢? – 2014-10-18 11:36:18

+0

我需要在我的程序中使用它們兩個。 – user4039853 2014-10-18 11:38:34

+0

@ user4039853:爲什麼你需要在你的程序中使用它們兩個?這是作業分配的要求嗎?我看到你從別人那裏得到了符合你問題字面解讀的答案,但是當你可以在Click事件處理程序中調用a.Show()並返回時,這是一種非常奇怪的方式來顯示錶單。如果使用任務和/或線程顯示錶單的要求不僅僅是任意繁忙的工作,你需要詳細解釋(如果它只是任意繁忙的工作,那麼......這不是什麼SO )。 – 2014-10-18 18:04:40

回答

0
private void button1_Click(object sender, EventArgs e) 
    { 
     NewForm a = new NewForm(); // my Form 
     Action showMethod =() => { 
      Invoke(new Action(() => a.Show())); 
     }; 
     Task t1 = new Task(showMethod); 
     Thread t = new Thread(new ThreadStart(t1.Start)); 
     t.Start(); 
    } 

試試這個...你必須把UI操作放在主線程上