×

Loading...

嗯,先回答第一个:在WPF Demo中,当鼠标点击第二个按钮之后:

async void buttonAsyncAwait_Click(object sender, RoutedEventArgs e) 被调用,这个时候UI线程被Block,直到程序运行到
byte[] resultBytes = await wc.DownloadDataTaskAsync(baseForumURI);,这个时候.net会建立另外一个线程运行 wc.DownloadDataTaskAsync(baseForumURI) 所返回来的Task<byte[]> object,同时运行权被返回 调用 async void buttonAsyncAwait_Click(object sender, RoutedEventArgs e) 的函数,这个函数就是UI的线程,在这个时候,UI被释放,不再Block

直到Task<byte[]> object运行完毕,系统把运行权又一次返回async void buttonAsyncAwait_Click(object sender, RoutedEventArgs e)函数,把结果赋值给 byte[] resultBytes
Sign in and Reply Report