從worker執行緒中顯示輸出
此刻我想先打個岔,請各位看看,如何讓 wo rker 執行緒把字串放到列表框( listbox)中。
列表框的訊息迴圈總是被程式的主線程掌管,雖然這並非絕對必要,但是讓主線程負責所有的螢幕更新工作,是相當理想的。
我在程式中定義了乙個訊息,名為 wm_plea se_update。當
wo rker
執行緒認為需要把一筆新的專案放到列表框中時,就送這個訊息給主線程。
worker
執行緒使用
sendmessage()
完成這件事情,以便製造出一種「函式調
用」的效果。在主線程處理完畢該訊息之前,
sendmessage()
不會返回,所以
我們可以保證所有的輸出有條不紊,不至於亂了次序。
postmessage()
代替 sendmessage()
,會發生什麼情
況?由於
postmessage()
會立刻返回,所以當主線程抓取字串內容要顯示
時,或許該字串內容早已又被
wo rker
執行緒改寫了。這就是多線程式設計中
最常見的一種兩難取捨:在最佳速度和最佳安全性之間取捨。在這裡我寧願選
擇比較慢但是比較安全的做法。
android 實現主線程 子執行緒雙向通訊
在 android 中,不可以在子執行緒中更新 ui 的操作,否則會報錯或者異常資訊。在這種情況下,我們會使用 handler 在 ui 執行緒建立該物件 接收子執行緒的訊息更新 ui.可以看出,這是子執行緒通知主線程,而主線程沒有直接通知子執行緒,那麼我們如何做到這一點?這樣有什麼好處?好處,很明...
主線程 子執行緒死掉 主線程可以在子執行緒之前死掉
我相信主線程不能在子執行緒之前死亡。但是有什麼方法可以檢查嗎?我在下面寫了乙個簡單的程式。任何人都可以證明它實際上離開理論嗎?class childre extends thread public void run for int i 0 i 10 i system.out.println chil...
WPF 多執行緒 子執行緒操作介面主線程的元素
1 在 中開啟乙個子執行緒 thread cabservice new thread new threadstart datareceiver cabservice.start 每隔2s 產生乙個資料 public void datareceiver thread.sleep 2000 2 定義 和...