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

2023-11-23

我有一个非常简单的控制台应用程序。

static void Main(string[] args)
{
    DoAsync();
    Console.ReadKey();
}

Here DoAsync启动一组任务并返回,不等待任务完成。 每个任务都会写入控制台,但在按下按键之前不会显示输出。
当我使用Console.ReadLine一切正常。

所以我很好奇ReadKey()特点。


From 文档 for Console.ReadKey():

ReadKey 方法会等待,即阻塞在发出该方法的线程上 ReadKey 方法,直到按下字符或功能键。

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

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

Reading 本文我猜你已经安装了.NET 4.5?

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

为什么 Console.ReadKey() 会阻止另一个线程中调用的 Console.WriteLine 的输出? 的相关文章

  • PHP 中的并行处理 - 你是如何做到的?

    我目前正在尝试在 php 中实现一个作业队列 然后 队列将作为批处理作业进行处理 并且应该能够并行处理一些作业 我已经做了一些研究并找到了几种实现它的方法 但我并不太了解它们的优点和缺点 例如 通过多次调用脚本来进行并行处理fsockope
  • C# 列表框 ObservableCollection

    我正在尝试使用 ListBox DataSource ObservableCollection 但是我不知道如何在 OC 更新时让列表框自动更新 我可以在 OC 上挂接 CollectionChanged 事件 但是我需要对列表框执行什么操
  • 外部组件中的控制器上的 404

    我在解决 Asp Net MVC 4 项目中的 404 响应时遇到问题 它是在 VS2012 中构建的 目标版本为 4 5 我已将预编译的视图和控制器内置到独立的 DLL 中 我能够动态加载 DLL 并从我的核心项目中检查它们 甚至调用它们
  • 为什么 C# 编译的正则表达式比等效的字符串方法更快?

    每次我必须对字符串执行简单的包含或替换操作 其中我正在搜索的术语是固定值 时 我发现如果我获取示例输入并对其进行一些分析 则使用编译的正则表达式是几乎 总是比使用 String 类中的等效方法更快 我尝试过比较多种方法 hs是要搜索的 干草
  • 如何定义 Swagger UI 参数的默认值?

    我已将 Swagger Swashbuckle 集成到 NET Core 2 2 API 项目中 一切都很好 我的要求纯粹是为了方便 考虑以下 API 方法 public Model SomeEstimate SomeRequest req
  • Facebook Graph API“/userid/feed”返回空白

    我正在使用 Facebook C SDK 但似乎无法使用 Graph API 获取反馈数据 我已从用户那里获得了以下扩展权限 范围 离线访问 publish stream publish checkins create event read
  • 正则表达式基于组的不同替换?

    所以我对正则表达式比较陌生 并且做了一些练习 我正在玩一个简单的 混淆器 它只是寻找 dot or dot or at or at 不区分大小写 并且在匹配项之前或之后有或没有任意数量的空格 这是针对通常情况的 someemail AT d
  • 我可以将 XAML/WPF 窗口复制到第二个窗口中,例如画中画电视吗?

    我有一个带有两个 XAML WPF 窗口 派生自 NavigationWindow 的应用程序 每个窗口都包含一个父 UserControl 其中放置了所有子控件 在其中一个窗口中 我想以画中画电视的方式显示第二个窗口的内容 实际上只是父
  • 任务中的 console.writeline 不起作用

    我正在学习基于任务的编程 但无法使该代码工作 控制台仅打印该消息一次 然后消失 如果我删除读取行并运行程序 不是调试模式 控制台只会出现并显示消息 提示按某个键继续 当我调试并将调试器放入 console write 中时 它可以正常工作一
  • 向父进程发出信号,表明子进程已完全初始化

    我正在启动一个公开 WCF 端点的子进程 如何从子进程向父进程发出信号 表明子进程已完全初始化并且现在可以访问端点 我曾考虑过使用信号量来实现此目的 但不太清楚如何实现所需的信号 string pipeUri net pipe localh
  • 将多对多关系与实体框架中的属性映射

    我总是使用属性将实体的属性映射到相应的列 这是一个例子 Table news entries public class News Key public int Id get set Column d date public DateTime
  • C# 字符串前的“@”[重复]

    这个问题在这里已经有答案了 可能的重复 NET 字符串前面的 是什么 https stackoverflow com questions 556133 whats the in front of a string for net 我在一本C
  • EF Core 6.0 时态表 - 添加迁移 - 期间属性“Comment.PeriodStart”必须是影子属性

    我们最近将项目升级为Microsoft EntityFrameworkCore 6 0 0 此版本支持开箱即用的 SQL Server 时态表 https devblogs microsoft com dotnet prime your f
  • 强制发送带有请求的根 CA

    我们有第三方 API 提供商提供 SOAP API 他们提供了3个证书 客户证书 中级证书 根证书 所有证书均在本地安装 他们提供了带有密码的 pfx 证书 我们已经在 SOAP UI 工具中上传了这个 pfx 并运行了一个请求 它起作用了
  • 我应该更喜欢 C# 中的静态方法吗

    在花了一些时间学习函数式编程之后 我越来越自然地想要使用不执行任何突变的静态方法 我有什么理由应该抑制这种本能吗 我觉得这个问题有点奇怪 因为静态方法和不执行突变的方法是方法的两个正交分类 您可以拥有可变静态方法和非可变实例方法 对我来说
  • 在 Windows 上使用的 Subversion Server

    哪种 Subversion SVN Server 会建议新手开始使用 Windows Server 操作系统 我想我将在客户端上使用 TortoiseSVN 并且主要进行 NET 开发 UPDATE 很好的建议 我根据投票选择我的答案 我会
  • 使用反应式扩展对事件进行单元测试

    我在用着 NET 的反应式扩展 Rx http msdn microsoft com en us devlabs ee794896 aspx将事件公开为IObservable
  • Objective C - 后台执行选择器并且分离新线程选择器?

    detachNewThreadSelector 和performSelectorInBackground 都用于在后台调用方法 2种方法有什么区别吗 或者它们的工作方式相同吗 它们本质上是相同的 但范式略有不同 他们在幕后做着完全相同的事情
  • 禁止显示“资源名称不是有效标识符”

    我有一个包含 5000 多个资源字符串的项目 几乎所有的标识符中都有句点 我们正在切换到自动生成强类型类 当然 由于周期的原因 我们看到了几千条警告 资源名称 blah 不是有效的标识符 我知道不是 生成器将句点更改为下划线 一切都很好 我
  • 如何防止 Lotus Notes 用户转发或复制通过 System.Net.Mail 发送的邮件?

    我想使用 SMTP 客户端 uiing microsft net 以 C 作为编程语言发送电子邮件 但是对于通过SMTP客户端发送的电子邮件 我们是否可以添加 禁止转发 或 禁止复制 等安全功能 我不希望电子邮件的收件人转发或复制电子邮件的

随机推荐

  • 如何将投影应用于 Spring Data REST 查询方法资源?

    我正在使用 Spring Data REST 2 1 4 RELEASE 我创建 一个实体Booking 它的 REST 存储库 扩展CrudRepository named BookingRepository and a 投影 Booki
  • R 中的 For 循环是邪恶的吗?

    我听说你不打算将过程编程风格强加到 R 上 我发现这很难 我刚刚用 for 循环解决了一个问题 这是错误的吗 有没有更好 更 R 风格 的解决方案 问题 我有两列 Col1 和 Col2 Col1 包含以自由格式输入的职位名称 我想使用 C
  • UIImagePNGRepresentation(UIImage()) 返回 nil

    为什么UIImagePNGRepresentation UIImage 回报nil 我正在尝试创建一个UIImage 在我的测试代码中只是为了断言它已正确传递 我的两个 UIImage 的比较方法使用UIImagePNGRepresenta
  • ASP.NET 页面中应该在哪里完成操作?

    我对 ASP NET 非常陌生 经过一番摸索之后有几个问题 我想知道我是否做错了 我有这样做的坏习惯 我有兴趣了解 ASP NET 的运作方式 我的问题是 在哪里可以找到文档来指导我决定在哪里进行哪些处理 作为一些具体示例 我对这些问题的答
  • 将信号处理委托给 python 中的子进程

    如何从 python 脚本运行命令并委托给它信号 例如Ctrl C 我的意思是当我跑步时 例如 from subprocess import call call child proc I want child proc处理Ctrl C 我猜
  • [Vue warn]:无法挂载组件:Webpack 4 中未定义模板或渲染函数

    当我升级到 Webpack 并将相关依赖项升级到 v4 后 我开始收到此错误 Vue warn Failed to mount component template or render function not defined 这是我的相关
  • 如何获取函数调用的返回值指针?

    我只需要一个指向 time Time 的指针 因此下面的代码似乎无效 c go 5 无法获取 time Now 的地址 我只是想知道为什么 除了先对变量进行赋值并获取变量的指针之外 还有什么方法可以做到这一点吗 package main i
  • 为什么 ZUUL 强制 SEMAPHORE 隔离来执行其 Hystrix 命令?

    我注意到 Spring Cloud ZUUL 强制执行隔离为 SEMAPHORE 而不是默认的 THREAD 如 Netflix 推荐的那样 评论中org springframework cloud netflix zuul filters
  • 在 Jenkins 管道中解析 XML 文件

    Note 当我的 Jenkins 环境中只有一个主节点时 我发布了这个问题 这使得序列化成为一个较小的问题 因为没有其他节点可以通信 因此这里的代码不会在多节点环境上按预期运行 例如 readFile只会从主节点读取文件 根据我的经验 最好
  • JSP 比较运算符行为

    我想比较两种不同类型
  • 如何使用c++获得线性回归线的斜率?

    我需要获得线性回归的斜率 类似于以下链接中 Excel 函数的实现方式 http office microsoft com en gb excel help slope function HP010342903 aspx 是否有 C 库或某
  • 使用 Selenium Web Driver 测试动态加载的内容

    我正在开发一个具有基于 Web 的前端的系统 我正在使用 Selenium 对其进行测试 在一页上 向下滚动时会动态加载内容 也许您从 Facebook 的好友列表中知道这一点 因为这是要求之一 通过 Javascript 使用 Selen
  • “if”语句的编码风格[重复]

    这个问题在这里已经有答案了 最近 我注意到一些程序员将 if 语句倒着写的风格 也就是说 在测试中 他们首先放置常量值 然后放置正在测试的变量 例如他们写道 bar foo if MY CONSTANT bar then do someth
  • buildroot - 如何更改内核版本字符串

    我使用 buildroot 和 Armstrong linux Linux4sam 开发 SAM9G25 EK 板 我的脚本正在创建linux版本 2 6 39 这个 令人困惑 lib modules文件夹等 我想删除它 我发现只有两个文件
  • WordPress:在显示链接之前检查是否有以前的帖子

    我使用以下代码在我的 WordPress 博客上显示 以前的帖子 链接
  • 单元测试新手

    我想知道如何使用 Visual Studio 2008 net 2 0 在现有 相当大 的应用程序中实现单元测试 我知道为现有 遗留代码开发单元测试是不现实的 但我希望对代码进行测试 我找到了大量关于如何编写代码测试的示例 但没有找到关于如
  • SMTP Indy 组件安全和身份验证属性有什么作用?

    我正在使用 indy 组件在 delphi 应用程序中实现电子邮件 我专门使用 TidSMTP 组件 我需要有效地支持所有主要的电子邮件服务器 我使用 Mozilla Thunderbird 作为我的电子邮件客户端 并将 smtp 属性与
  • Ply Lex 解析问题

    我使用 ply 作为我的 lex 解析器 我的规格如下 t WHILE r while t THEN r then t ID r a zA Z a zA Z0 9 t NUMBER r d t LESSEQUAL r lt t ASSIGN
  • 在 ASP.NET 中实现文件下载时如何处理我的文件流?

    我有课DocumentGenerator其中包含一个MemoryStream 所以我已经实施了IDisposable在课堂上 但我不知道如何 在哪里可以处置它 这是我当前的代码 它在 MVC 中执行文件下载 using DocumentGe
  • 为什么 Console.ReadKey() 会阻止另一个线程中调用的 Console.WriteLine 的输出?

    我有一个非常简单的控制台应用程序 static void Main string args DoAsync Console ReadKey Here DoAsync启动一组任务并返回 不等待任务完成 每个任务都会写入控制台 但在按下按键之前