作者cplusplus (一切都結束了)
看板C_Sharp
標題[問題] 關於form的問題...
時間Sun Aug 24 17:49:07 2008
HI~
我目前需要在執行緒 B 呼叫一些 form 的方法,這些 form 是由執行緒 A 所產生
所以我使用 invoke 來呼叫一些方法以達到執行緒安全,
但是問題來了,首先是,如果我產生那些 form ,還沒有呼叫過 show 顯示的話
會出現 exception,說控制項代碼(我猜是handle)尚未產生無法呼叫 invoke,
於是我呼叫 CreateControl ,恩,文件上是說會強制產生控制項代碼handle,
但是沒用 ~"~ 一樣有這個問題,還是說沒產生..........怎麼???
我猜 show 裡面應該有一些處理真正產生 handle 之類的功能吧
所以我想說那就只好在乎叫 invoke 前面先呼叫 show 了,
但是這樣問題又來了,我在執行緒 A 產生這些 form 的時候,我並不想要馬上
呼叫 show 顯示出來,於是我想等到 B 裡面需要 show 出來的時候才呼叫...
問題是,照我的觀察是,哪個 thread 先呼叫了 show (產生handle?),那個執行緒
就要負責那個 form 的 message-handling,所以我 B thread 執行完離開,
那些 form 就卡死了 ~"~.........
以前我也有回答別人這個問題,但現在才發現到似乎是"第一個呼叫 show 的 thread"
要負責 message-handling......而不是產生這個 form 的 thread .....
~"~ 更....
所以我現在的方法是在 A thread 裡面產生完馬上 show 又馬上 hide ,
很爛的方法,會一閃而過,......~"~ 要先顯示在螢幕外再隱藏,麻煩又dirty
總覺得這樣有點不爽快 XD
請問,是有什麼方法可以處理這個問題呢??? 雖然說可以用上面那個爛方法解決,但是
有點不爽啊 XD ,感謝各位
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 61.229.1.167
→ cplusplus:總覺得要show才會真的產生東西雖然好像是好事,但不太 08/24 18:12
→ cplusplus:合理的感覺耶~ 真詭異 ~"~ 08/24 18:13