用async做一個多線程下載并在datagridview中即時更新,運行時在達到4個線程同時下載時界面卡頓,多次嘗試后是不知道async與await線程調用順序造成。
進入async方法后在調用await之前代碼都在主線程(調用線程)中運行,調用await時及之后的async方法代碼將另起線程運行該部分代碼,而主線程在遇到await后回到主線程繼續執行async后的代碼。
將async方法通過聲明委托后用begininvoke調用后解決。
過了一段時間再看又忘了,遇到一個async方法中前后調用兩次await,我不知作何解釋,目前我的理解是運行第一個await后的方法將開啟新線程,后面的代碼要等第一個await方法運行完后,后面的代碼將接著該線程運行下面的代碼,直到遇到第二個await后將開啟新線程運行第二個await里的方法,第二個await方法后的代碼將等待第二個await方法運行完成后接著第二個await的線程繼續運行下面的代碼。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。