[問題] Winform與Thread 相關問題請教..

作者: don750421 (1+1≠2)   2016-03-16 21:59:38
目前有個需求,Mainform會有資料再跑..,但是,MainForm又會有其他按鍵事件。
例如:要開啟一個Form做登入的視窗..
在不影響主Worm的情況下,選擇以下兩種方式..
第一種方式:
LoginForm TempLogin = new LoginForm();
TempLogin.TopMost = true;
TempLogin.Show();
第二種方式:
MainForm.Invoke(new MethodInvoker(delegate()
{
LoginForm TempLogin = new LoginForm();
TempLogin.TopMost = true;
TempLogin.Show();
}));
問題一:
請問一下,以上兩種方式所開啟的Form都是跑另一個Thread嗎? 那差異為何?
問題二:
假設我在LoginForm登入後,要把登入的人名帶回MainForm顯示...
所以,我在LoginForm 做一個 delegate,並在MainForm實作deleate。
把登入人員名稱顯示在ui上。
那麼我在MainForm顯示人員資訊在UI上,也是跑原本MainForm的Thread嗎?
還是跑我原本LoginForm的那個Thread? (會影響到MainForm執行嗎?)
問題三:
假設,我在LoginForm 上的某個按鈕事件 "動態產生Form(使用Form.Show())",
作為顯示人員的Detail資料,那麼,這個Form又會是跑哪個Thread呢?
最近剛在研究Thread和Form的關係,所以問題比較多@@
先謝謝各位前輩~
作者: yeo1987 (Archie)   2016-03-16 23:46:00
決定在於你呼叫的時候Thread是不是一樣Invoke會根據Control所屬的Thread執行
作者: kalaja (菸酒生)   2016-03-17 10:11:00
所有與控制項顯示相關都是主執行緒,Control.Invoke是強制使用主執行緒執行。可以觀察Thread.CurrentThread會更清楚。

Links booklink

Contact Us: admin [ a t ] ucptt.com