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

看板C_Sharp (C#)作者 (1+1≠2)時間9年前 (2016/03/16 21:59), 編輯推噓0(005)
留言5則, 2人參與, 最新討論串1/2 (看更多)
目前有個需求,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的關係,所以問題比較多@@ 先謝謝各位前輩~ -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 114.39.100.182 ※ 文章網址: https://www.ptt.cc/bbs/C_Sharp/M.1458136781.A.D20.html

03/16 23:46, , 1F
決定在於你呼叫的時候Thread是不是一樣
03/16 23:46, 1F

03/16 23:48, , 2F
Invoke會根據Control所屬的Thread執行
03/16 23:48, 2F

03/17 10:11, , 3F
所有與控制項顯示相關都是主執行緒,Control.Invoke是強制
03/17 10:11, 3F

03/17 10:12, , 4F
使用主執行緒執行。
03/17 10:12, 4F

03/17 10:14, , 5F
可以觀察Thread.CurrentThread會更清楚。
03/17 10:14, 5F
文章代碼(AID): #1MwMRDqW (C_Sharp)
文章代碼(AID): #1MwMRDqW (C_Sharp)