[問題] 請問如何使async的method完成後再執行下一個任務

看板C_Sharp作者 ( )時間10年前 (2013/12/30 11:38), 編輯推噓2(205)
留言7則, 3人參與, 最新討論串1/1
我正在寫windows store app, 由於希望是在初次load程式時確保已經執行完畢才會進到主畫面, 因此使用extened splash screen延長啟動畫面, 但是因為使用library的function,裡面都是async method, 所以現在變成 : splash screen ->extened splash screen(0.5秒) -> 還沒讀完的主畫面 這樣延長啟動畫面就變得沒有意義了 --------------------------詢問分隔線----------------------------- 所以想問的是 如何將 Data obj = await asyncMethod(....); 1.改成sync的方式(有辦法嗎?不動到原本method) 或 2.去偵測非同步執行完成後,再去做下個動作 有大致上查了一些文章,包括使用Task.run()、wait()(這個會導致死結) 但是實作都失敗....Orz 謝謝各位! -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 60.250.123.77

12/30 13:05, , 1F
1. 顯示splash 2.data obj = await methodAsync() 3.
12/30 13:05, 1F

12/30 13:06, , 2F
隱藏splash
12/30 13:06, 2F

12/30 13:07, , 3F
非同步method加上await後可以把他當作同步method來看
12/30 13:07, 3F

12/30 13:07, , 4F
12/30 13:07, 4F

12/30 13:14, , 5F
設定旗標,完成時改變狀態。
12/30 13:14, 5F

12/30 19:46, , 6F
async 本身就會傳回 Task 可以去 poll IsCompleted
12/30 19:46, 6F

12/30 20:02, , 7F
var t=Task.Run(async ()=>await asyncMethod()); t.IsXX..
12/30 20:02, 7F
文章代碼(AID): #1ImEgen2 (C_Sharp)