看板 C_Sharp 關於我們 聯絡資訊
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