[问题] 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