先說明一下,本人最近遇到了什麼問題,就是在寫寫訊息佇列的時候,發現訊息佇列每次接收乙個訊息的時候都是建立了乙個新的執行緒。這樣就導致了訊息處理的時候沒有在主線程上進行,然而其中的一些步事項是要通過主線程才能操作的。這樣就引出了乙個子執行緒怎麼去通知主線程要做哪些事情呢?
為了解決上面的問題我找了好的多資料,好多都是用委託,去解決了,然後我又看了我的專案通過這種begininvoker的這種辦法解決不是很好用。並不能解決的當前的問題,在這個時候我發現了synchronizationcontext物件。這個對像的用處就是可以記錄乙個執行緒的上下文然後再子執行緒處理完之後,要用到主要程去操作的時候可以去post或者send乙個事件支解決,這樣就很方便,**如下:
特此記錄以上**,方便自己日後檢視,並希望能夠幫助和我遇到同乙個問題的人。class testclient
private
void
onconnected(object state)//由於是主線程的同步物件post呼叫,這個是在主線程中執行的
private
void
dowork()//這個是workthread執行緒執行的
}
–知道的越多,不知道的也就越多,多多學習!
C 子執行緒與主線程之間的通訊
先說明一下,本人最近遇到了什麼問題,就是在寫寫訊息佇列的時候,發現訊息佇列每次接收乙個訊息的時候都是建立了乙個新的執行緒。這樣就導致了訊息處理的時候沒有在主線程上進行,然而其中的一些步事項是要通過主線程才能操作的。這樣就引出了乙個子執行緒怎麼去通知主線程要做哪些事情呢?為了解決上面的問題我找了好的多...
內部通訊 主線程和子執行緒之間的通訊
1.主線程建立handler類的物件,重寫handlemessage方法 handler handler new handler public void handlemessage message msg switch msg.what case 0 break 2.主線程建立乙個子執行緒 用thr...
C 參考 主線程和子執行緒之間的引數傳遞
幾個程序在大多數情況下要包含很多的子執行緒,那麼他們之間免不了的要互相傳遞很多的引數,那麼引數怎麼傳遞的呢?第一種方法 thraed類有乙個帶引數的委託型別的過載形式,這個委託的定義如下 delegate void parameterizedthreadstart object obj 這個thre...