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