※ 引述《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