作者reptile0426 ( )
看板C_Sharp
标题Re: [问题] delegate.BeginInvoke跟control.invoke …
时间Wed Nov 21 17:25:06 2007
※ 引述《horngsh (要公理要正义)》之铭言:
: ※ 引述《reptile0426 ( )》之铭言:
: : 但是我又对worker thread这个东西有点疑问
: : 它不是UI thread,那他是什麽东西
: : 一个windows form程式除了本身的main thread之外,背後还有一个worker thread
: : 然後又冒出一个threadpool,这更让我想了解c#观念 越来越模糊
: 发现爬虫类仁兄好像有来注册, 感恩捧场.....
: 假设你有一个FORM(它是UI THREAD), 如果你按了一个BUTTON後开始计算圆周率至小数
: 後200位, 你会发现你的主表单都没有反应了(not responsive), 原因是你是直接在
: 你的UI THREAD中做计算的工作, 所以它没有空去轮询使用者对UI的动作了, 解决
: 的方法是在UI THREAD中, 另外生成一个worker thread, 把计算圆周率PI的工作委任
: (Delegate)给它, 如此一来UI THREAD就会仍然可以正常的反应使用者UI的输入动作,
: 但这样一来会产生另外一个问题, 就是worker thread变成不能直接更新UI thread上
: 面的控制项了(就是主表单), 必须透过Control.Invoke or Control.BeginInvoke去
: 唤起一个Delegate, 在此Delegate所指到的方法中就可以安全地更新UI上的Control..
: 说得很杂, 希望你有看懂...
谢谢你 那关於worker thread是什麽我大概知道了,
有人要解答control.BeginInvoke跟 delegate.BeginInvoke的不同吗= =?
这位大大讲的这个范例我有看过,观念我也懂得
其实这提的疑问也是来自於这篇文章
http://msdn2.microsoft.com/en-us/library/ms951089.aspx
他在里面同时用到Control.BeginInvoke跟delegate.BeginInvoke
搞得我....探口气
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 163.25.101.28