.net – 为什么Console.ReadKey()阻止在另一个线程中调用Console.WriteLine的输出?

.net – 为什么Console.ReadKey()阻止在另一个线程中调用Console.WriteLine的输出?,第1张

概述我有一个非常简单的控制台应用程序 static void Main(string[] args){ DoAsync(); Console.ReadKey();} 这里DoAsync启动任务集并返回不等待任务的完成. 每个任务都写入Console,但在按下键之前不显示ouptut. 当我使用Console.ReadLine时,一切正常. 所以我对ReadKey()的小说很好奇. 我有一个非常简单的控制台应用程序
static voID Main(string[] args){    DoAsync();    Console.ReadKey();}

这里DoAsync启动任务集并返回不等待任务的完成.
每个任务都写入Console,但在按下键之前不显示ouptut.
当我使用Console.Readline时,一切正常.

所以我对ReadKey()的小说很好奇.

解决方法 从 the documentation开始,用于Console.ReadKey():

The ReadKey method waits,that is,blocks on the thread issuing the
ReadKey method,until a character or function key is pressed.

它实际上做的是获取Console.InternalSyncObject上的锁,这会阻止在控制台上进一步 *** 作.

Console.Readline()方法不会以这种方式阻塞线程.

阅读this article我猜你安装了.NET 4.5?

总结

以上是内存溢出为你收集整理的.net – 为什么Console.ReadKey()阻止在另一个线程中调用Console.WriteLine的输出?全部内容,希望文章能够帮你解决.net – 为什么Console.ReadKey()阻止在另一个线程中调用Console.WriteLine的输出?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/langs/1207188.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-04
下一篇 2022-06-04

发表评论

登录后才能评论

评论列表(0条)

保存