2011-04-14 31 views
0

我有一個方法,創建一個窗口的窗體的約束,還sents到該窗口形成一個參數。我想創建一個窗口窗體的線程。我該怎麼做?c#如何線程的窗體

public Send_to_windowForm(string name_form, string value_for_labellBox) 
{ 
thread t = new thread(new threadStart (form(value_for_labelBox)).Start(); 
Application.Run(new form(value_for_labelBox)); 
form.text=name_form; 
} 

它不工作。我不認爲這是正確的。我該怎麼做?還有一個問題:我如何處理線程打開的表單應用程序?我想處理所有表單,因爲在特定時刻,我想爲在桌面上打開的某個表單添加新值。

THX

+0

不能只需創建窗體的新實例,然後修改其文本並顯示它? – Marco 2011-04-14 07:04:34

+0

你能否澄清你的要求?從上面看來,你試圖在與主線程分離的線程中運行表單。任何通過表單的gui /用戶交互應該在主線程上。 – mservidio 2011-04-14 07:06:50

回答

1

你需要做這樣的事情:

namespace UIThreadMarshalling { 
    static class Program { 
     [STAThread] 
     static void Main() { 
       Application.EnableVisualStyles(); 
       Application.SetCompatibleTextRenderingDefault(false); 
       var tt = new ThreadTest(); 
       ThreadStart ts = new ThreadStart(tt.StartUiThread); 
       Thread t = new Thread(ts); 
       t.Name = "UI Thread"; 
       t.Start(); 
       Thread.Sleep(new TimeSpan(0, 0, 10)); 
     } 

    } 

public class ThreadTest { 
     Form _form; 
     public ThreadTest() { 
     } 

    public void StartUiThread() 
    { 
     using (Form1 _form = new Form1()) 
     { 
      Application.Run(_form); 
     } 
    } 
    } 
} 
+0

我點擊另一種形式的按鈕後激活線程。 – Elli 2011-04-14 07:11:12

+0

沒有什麼可以阻止你將這裏顯示的代碼放在Main中的按鈕點擊事件中。 – 2011-04-14 07:13:45

+0

我會把我寫的代碼寫在一個新的答案中。請告訴我,如果我沒有好 – Elli 2011-04-14 07:15:10

相關問題