主線程 子執行緒 通訊 最好用同步方式

2021-07-05 22:02:48 字數 688 閱讀 5969

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 定義 和...