另外还是以你开头的代码为例子,如果程序是这个样子的话:
static void Main(string[] args) { Console.WriteLine("main thread started.."); getUserMoves("me@hotmail.com", "password"); getUserMoviesTaskAsync("me@hotmail.com","password"); Console.WriteLine("waiting for main thread to end"); int n = 1; while(true) { Console.WriteLine(GetCurrentThreadId() + ": n= " + n); n=n+1; } } private static async void getUserMoviesTaskAsync(string email, string password) { WebClient wb = new WebClient(); string userRight = await wb.DownloadStringTaskAsync(email + password); Console.WriteLine(GetCurrentThreadId() + " first await finished, about to run next one"); string moviesUserCanWatch = await wb.DownloadStringTaskAsync(userRight); Console.WriteLine(moviesUserCanWatch); }“一旦遇到await关键字...把运行权交还给调用getUserMoviesTaskAsync函数的Object,在这里,就是Main(string[] args) {}”的具体意思是什么?比如说main正在原始线程中执行一个循环;.net在工作线程完成getUserMoviesTaskAsync,它怎样把控制权交给main?在控制台会看到什么?getUserMoviesTaskAsync中的Console.WriteLine打印出的线程id是哪一个线程的?