作者horngsh (要公理要正义)
看板C_Sharp
标题Re: [问题] delegate.BeginInvoke跟control.invoke …
时间Wed Nov 21 16:59:16 2007
※ 引述《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..
说得很杂, 希望你有看懂...
--
===============================
想讨论dotNet吗? 想知道dotNet吗?
来这儿逛逛吧!
http://netforum.no-ip.biz
http://dotnet-project.no-ip.biz
===============================
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 59.126.240.23