[問題] 如何以async做到同步的效果?

看板Silverlight作者 (乾溫)時間12年前 (2012/03/20 21:43), 編輯推噓0(0013)
留言13則, 4人參與, 最新討論串1/1
網路上找了好久還是找不到這個解法 :( 所以想請問大家~ 以下目的是想透過contracts來到遠端要資料 我想做到, _client.getSysParamsCompleted這個事件發生並且 _client_getSysParamsCompleted執行完之後之後, myFunction這個程式才會return,請問該怎麼做呢? void myFunction() { (...程式碼...) _client.getSysParamsCompleted += new EventHandler<getSysParamsCompletedEventArgs>(_client_getSysParamsCompleted); _client.getSysParamsAsync(); (...程式碼...) } -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 114.34.208.4 ※ 編輯: thanksgive 來自: 118.160.32.162 (03/20 22:49)

03/22 15:33, , 1F
寫在Completed裡面?
03/22 15:33, 1F

03/22 16:54, , 2F
因為myFunction目的是從遠端抓最新的資料回來,我想在
03/22 16:54, 2F

03/22 16:56, , 3F
很多地方都用到myFunction,如果把每個地方要做的事情
03/22 16:56, 3F

03/22 16:57, , 4F
都寫進去,我擔心會太多且不好處理
03/22 16:57, 4F

03/22 16:58, , 5F
還是有類似的方法? 我的目的就只是確保抓回來的資料是
03/22 16:58, 5F

03/22 16:59, , 6F
新的,然後讓後面的流程繼續處理
03/22 16:59, 6F

03/23 10:25, , 7F
如果依照不同流程把myFunction()拆開呢?還是一定要合一?
03/23 10:25, 7F

04/18 12:15, , 8F
我有個案子也是要模擬同步功能
04/18 12:15, 8F

04/18 12:15, , 9F
該案子是sl2 現在不知道有沒有別種作法
04/18 12:15, 9F

04/18 12:16, , 10F
我們的方式是有點取巧的 發送wcf時把畫面disable
04/18 12:16, 10F

04/18 12:16, , 11F
或用個透明的遮罩蓋住 等到completed再enable或拿掉遮罩
04/18 12:16, 11F

04/18 12:16, , 12F
後來另一個案子是用遮罩 比disable好用很多 可以設定區域
04/18 12:16, 12F

04/22 16:03, , 13F
你可以用Async CTP library來達成同步效果,但要SL4以上
04/22 16:03, 13F
文章代碼(AID): #1FQ8cKP8 (Silverlight)