如題,請問這種問題如何解決?標題描述的只是個例,其實所有的網路組件在ReceiveBuffer時只要是ShowModal顯示另一個視窗或者有MessageBox都是會死等了,這個可以用Show顯示視窗的辦法來解決,可是解決不了MessageBox的問題,本人學藝不精,請高教賜教,非常感謝!
uj5u.com熱心網友回復:
同步到主執行緒,譬如PostMessage到主視窗處理自定義訊息,收到訊息MessageBox即可。uj5u.com熱心網友回復:
樓上所說的是標準做法嗎?這樣不是太麻煩了嗎?所有MessageBox都在主視窗操作,包括OpenDialog等等一堆視窗全要這樣做uj5u.com熱心網友回復:
再說了,就算在主視窗的MessageBox同樣會阻斷ReceiveBuffer,顯示MessageBox跟ShowModal是一樣的。uj5u.com熱心網友回復:
這個為什么要用showmessage呢。這個是showmodal表單;用訊息機制去處理一些告警等等不是更好?
uj5u.com熱心網友回復:
你ReceiveBuffer執行緒和主執行緒是2個執行緒,你在ReceiveBuffer里MessageBox或者ShowModal,這倆都是阻塞函式,會阻塞在他們的表單訊息處理函式中,你把訊息PostMessage到主執行緒,你ReceiveBuffer接著運行,要不還有更麻煩的方法,在你的ReceiveBuffer執行緒里實作表單訊息回圈,同時不阻塞ReceiveBuffer也是可以的。
uj5u.com熱心網友回復:
請仔細看#1帖子,我說的是PostMessage,不是ShowMessage。
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/116077.html
標籤:VCL組件開發及應用
上一篇:tedit繼承組件的問題
