想问一下 为什么 await GetString(); Console.WriteLine("GetStrLengthAsync方法执行结束" + Thread.CurrentThread.ManagedThreadId); 执行不到。
如果在main方法里面添加thread.sleep 可以让下面执行的到 但是 为什么 这里和task的线程是同一个线程,不应该是主线程吗
Main 方法中的 task
需要 Wait()
Task<int> task = GetStrLengthAsync();
task.Wait();
是这个意思吗:await回到调用的main方法,应为没有等待,执行结束之后程序就结束了。
还有一个问题 如果执行的到 为什么划线的和task 的线程是同一个线程
@narojay: 参考之前的博问 C# async/await 前后线程的问题
想问一下 博客园能搞一个图片直接拖到编译markdown的页面吗,每次上传感觉不怎么方便 。
@narojay: 支持 control+C/V 上传图片
@dudu: 我试着把我桌面的图片ctrl c 在上面的修改问题中间 ctrl v 并不能上传图片
@narojay: 这个是 bug ,我们会尽快修复
@narojay: 您好,非常感谢您的反馈,已修复该问题。
@博客园团队: 我点击 支持显示的是您已经推荐过 ,应该是您已经支持过把。
没搞清楚await和task以及线程嘛。
写了那么多“嵌套”Task,你这一闪而过很正常。
通常这种建议:去掉关键字await,自己去写实现代码await,再回来理解await;
因为主线程比子线程先跑完,所以窗口就给关掉了
Main 最后写 Console.ReadLine();
不然会关掉控制台