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

作者: bruceyclee (wooly)   2016-03-24 03:37:43
q1: 沒看到你的前後程式碼,所以目前看起來第一種是同一個 thread
q2: 從你的問題描述來看,似乎 MainForm 還會有其他的工作要做,所以你要處理的方
式應該是任何 MainForm 所接收到的任務都應該要建立新的 thread 來完成任務,
MainForm 的 thread 應該只專心處理 MainForm UI 上的工作就好,如果其他 thread
完成工作需要回傳訊息給 MainForm 時,一定呼叫 MainForm UI thread 來更新畫面,
在網路上你可以找到很多這種 sample code
q3: 按鈕事件是 LoginForm 上啟動的,若你沒有建立新的 thread,則就會用 LoginForm
thread 來執行按鈕事件裡的工作.
※ 引述《don750421 (1+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的關係,所以問題比較多@@
: 先謝謝各位前輩~

Links booklink

Contact Us: admin [ a t ] ucptt.com