看板 C_Sharp 關於我們 聯絡資訊
※ 引述《mtm ( )》之銘言: : 假設我有class A 跟class Form : 先在Form裡面new一個A : 接著從Form的UI Thread去Call了A的method X : (這時候X是在一個新的Thread裡面跑吧?) : 當我這個 X 跑完或是跑到中途的時候,我想要改動Form裡面TextBox的內容 : 但是UI Thread似乎不會允許我這樣做,尤其在使用.net compact framework時 : 就直接跳個error說要用control.invoke來做這樣的事情 : 所以想請問,我應該要在new A這個class的時候把Form的this丟進去嗎? : 當然A這個class會先宣告一個 System.Windows.Forms.Form myForm = null; : construct時 myForm = form : 順帶問,即使我有了myForm,也應該不能直接做myForm.TextBox1.Text = "abc"; : 這樣的動作吧? : 我應該要怎麼做,才能從class A裡面的某一個Method裡面,去改動到Form的TextBox : 另外一問,我如果要從Class A去call一個Form裡面獨立的public void Method() : 可以直接 myForm.Method() 嗎?還是說這個也得繞路? : 目前有點昏頭中,思緒一整個亂糟糟 : 我這邊的觀念實在是不太懂,而且我delegate也不太熟析 : 不知道有沒有大大能做個範例詳細解說一下,感激不盡 m(_._)m 你應該要NEW一個THREAD去做METHOD X 通常那叫做WORKER THREAD 然後想更新UI值時用CONTROL.INVOKE傳一個DELEGATE去處理這件事 在DELEGATE的METHOD裡用CONTROL.INVOKEREQUIRED 去判斷這是UI THREAD還是WORKER THREAD 我之前也被DELEGATE弄得一頭霧水,現在還是不太懂就是了 看看這能不能幫到你 http://maxi326.wordpress.com/2008/12/28/winforms-ui-thread-howto/ -- -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 122.125.138.85