用async做一个多线程下载并在datagridview中即时更新,运行时在达到4个线程同时下载时界面卡顿,多次尝试后是不知道async与await线程调用顺序造成。

进入async方法后在调用await之前代码都在主线程(调用线程)中运行,调用await时及之后的async方法代码将另起线程运行该部分代码,而主线程在遇到await后回到主线程继续执行async后的代码。

将async方法通过声明委托后用begininvoke调用后解决。


过了一段时间再看又忘了,遇到一个async方法中前后调用两次await,我不知作何解释,目前我的理解是运行第一个await后的方法将开启新线程,后面的代码要等第一个await方法运行完后,后面的代码将接着该线程运行下面的代码,直到遇到第二个await后将开启新线程运行第二个await里的方法,第二个await方法后的代码将等待第二个await方法运行完成后接着第二个await的线程继续运行下面的代码。