等待所有工作线程结束[重复]

2024-01-29

可能的重复:
C# 线程/锁混淆 https://stackoverflow.com/questions/1280723/c-sharp-threading-lock-confusion

我有以下问题:我有一个监视类,它正在运行它自己的线程,该线程从队列写入文件(因此主应用程序不必等待 IO)。但是,当主应用程序线程结束时(控制流在最后一行之后运行),监视器线程也会结束,即使它仍在运行(已满队列)。

有什么方法可以在不修改主线程的情况下等待工作线程完成吗? C#。

编辑:我无法修改主线程。我只为具有给定 API 的大型应用程序编写“支持”代码(一种静态方法,包含我应编写的内容,从配置中读取的位置),无法更改线程,主应用程序不得依赖于我的代码。


把它们调换一下。让您的主线程成为监视线程,并从那里生成工作线程(从 Q 写入文件)。

或者让主线程启动线程进行监视和工作,然后让主线程旋转并等待(循环直到它从其他线程获得中止/完成通知)

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

等待所有工作线程结束[重复] 的相关文章

  • 在 CPP 类中将 C 函数声明为友元

    我需要在 C 函数中使用类的私有变量 我正在做这样的事情 class Helper private std string name public std getName return name friend extern C void in
  • 前向声明类型和“已声明为类类型的非类类型”

    我对以下代码有问题 template
  • 有些有助于理解“产量”

    在我不断追求少吸的过程中 我试图理解 产量 的说法 但我不断遇到同样的错误 someMethod 的主体不能是迭代器块 因为 System Collections Generic List 不是迭代器接口类型 这是我被卡住的代码 forea
  • extern 声明和函数定义都在同一文件中

    我只是浏览了一下gcc源文件 在gcc c 我发现了类似的东西 extern int main int char int main int argc char argv 现在我的疑问是extern是告诉编译器特定的函数不在这个文件中 但可以
  • RestSharp获取序列化输出

    我正在寻找一种方法来访问 AddBody 调用的序列化结果 我正在使用内置的 RestSharp 序列化器 例子 class Foo public string FooField void SendRecord var f new Foo
  • 在 C# 中,如何根据在 gridview 行中单击的按钮引用特定产品记录

    我有一个显示产品网格视图的页面 该表内有一列 其中有一个名为 详细信息 的超链接 我想这样做 以便如果用户单击该特定产品的详细信息单元格 将打开一个新页面 提供有关该产品的更多信息 我不确定如何确定哪个Product记录链接的详细信息以及我
  • 如何使用 x64 运行 cl?

    我遇到了和这里同样的问题致命错误 C1034 windows h 未设置包含路径 https stackoverflow com questions 931652 fatal error c1034 windows h no include
  • 在 .NET MAUI 中实现 TouchTracking

    我一直致力于将我们的应用程序从 Xamarin Forms 迁移到 NET MAUI 我们的应用程序几乎没有绘图功能 用户可以用手指进行绘图 我们用了TouchTrackingXamarin Forms 中的 nuget 包 但与 NET
  • 模板外部链接?谁能解释一下吗?

    模板名称具有链接 3 5 非成员函数模板可以有内部链接 任何其他模板名称应具有外部链接 从具有内部链接的模板生成的实体与在其他翻译单元中生成的所有实体不同 我知道使用关键字的外部链接 extern C EX extern C templat
  • 在 C 中使用枚举而不是 #defines 作为编译时常量是否合理?

    在 C 工作了一段时间后 我将回到 C 开发领域 我已经意识到 在不必要的时候应该避免使用宏 以便让编译器在编译时为您做更多的工作 因此 对于常量值 在 C 中我将使用静态 const 变量或 C 11 枚举类来实现良好的作用域 在 C 中
  • 比较:接口方法、虚方法、抽象方法

    它们各自的优点和缺点是什么 接口方法 虚拟方法 抽象方法 什么时候应该选择什么 做出这一决定时应牢记哪些要点 虚拟和抽象几乎是一样的 虚方法在基类中有一个实现 可以选择重写 而抽象方法则没有 并且must在子类中被覆盖 否则它们是相同的 在
  • 使动态创建的链接标签在 Winforms 中可点击

    我正在制作一个程序 允许用户单击由动态链接标签创建的公司名称 在我想知道如何做到这一点之前 我从未在 C 中使用过链接标签 可为特定用户生成的业务数量各不相同 因此每个用户的链接标签数量并不相同 然后我想捕获业务 ID 以进行 Json 调
  • 为什么 0.5 mod 0.1 在不同的编程语言中结果不同?

    我有一个关于模数的问题 模运算求一个数除以另一个数的余数 我原本期望 0 5 0 1 0 的结果 但是当我在 PHP 或 net 中运行它时 我得到 0 1 我运行的 php 代码是 var dump fmod 0 5 0 1 在 net中
  • 如何解压 msgpack 文件?

    我正在将 msgpack 编码的数据写入文件 在编写时 我只是使用 C API 的 fbuffer 如 我为示例删除了所有错误处理 FILE fp fopen filename ab msgpack packer pk msgpack pa
  • C++:为什么 numeric_limits 对它不知道的类型起作用?

    我创建了自己的类型 没有任何比较器 也没有专门化std numeric limits 尽管如此 由于某种原因 std numeric limits
  • 了解 Lambda 表达式和委托 [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我已经尝试解决这个问题很长一段时间了 阅读在线博客和文章 但到目前为止还没有成功 什么是代表 什么是 Lambda 表达式 两者的优点
  • 在 Win32 控制台应用程序中设置光标位置

    如何在 Win32 控制台应用程序中设置光标位置 最好 我想避免制作句柄并使用 Windows 控制台功能 我花了整个早上沿着那条黑暗的小巷跑 它产生的问题比它解决的问题还要多 我似乎记得当我在大学时使用 stdio 做这件事相对简单 但我
  • 为什么空循环使用如此多的处理器时间?

    如果我的代码中有一个空的 while 循环 例如 while true 它将把处理器的使用率提高到大约 25 但是 如果我执行以下操作 while true Sleep 1 它只会使用大约1 那么这是为什么呢 更新 感谢所有精彩的回复 但我
  • 在 System.Type 上使用条件断点时出错

    这是函数 public void Init System Type Type this Type Type BuildFieldAttributes BuildDataColumns FieldAttributes 我在第一行设置了一个断点
  • MySqlConnectionStringBuilder - 使用证书连接

    我正在尝试连接到 Google Cloud Sql 这是一个 MySql 解决方案 我能够使用 MySql Workbench 进行连接 我如何使用 C 连接MySqlConnectionStringBuilder 我找不到提供这三个证书的

随机推荐

  • 如何停止Python线程中的for循环?

    我正在尝试用 Python 创建一个脚本来学习线程 但我似乎无法停止线程中的 for 循环 目前 我正在使用 pyInstaller 编译脚本并结束线程进程 我知道这不是最好的方法 有人可以向我解释如何根据命令结束线程吗 我读过许多其他问题
  • AJAX 重写后如何重新绑定对话框?

    我有一个学生表 每一行都是他们的名字 一个选择列表来选择他们的课程出勤率 然后单击 消息 链接时会弹出一个对话框 向学生发送消息 该表由选定的课程列表动态驱动 例如 教师选择一门课程 然后表中会重新填充该课程中的所有学生 这是通过 AJAX
  • mongodb:限制对特定集合的读/写访问

    即使用户拥有数据库的读 写访问权限 是否有任何方法可以限制数据库中特定集合的读 写访问权限 例如 我有一个名为 PRODCAST 的数据库 它包含 collA collB collC 和 collD 假设我们有 10 个用户 他们都可以访问
  • JSF:如果省略 GET 参数,则抛出 404 错误

    如果将无效的 GET 参数传递到页面 我需要抛出 404 错误 我已将其附加到验证器 如上所述here https stackoverflow com a 4902757 1973599 但如果根本没有参数 则验证器不会被调用 我该如何处理
  • 无法在 Docker 容器中使用 TypeScript 启动 React

    我试图npm run start一个使用以下命令创建的 React 应用程序 template typescript 因此 Typescript 已安装 作为 React 依赖项 但我的 Docker 容器抱怨一条通用错误消息 TypeSc
  • Nunit 使用的 XML 文件的 XSD

    在哪里可以找到 Nunit 使用的 XML 文件的 XSD 对于结果文件 看结果 xsd http www nunit org docs 2 2 files Results xsd 请注意 它在 Chrome 中对我来说无法正确显示 您可能
  • 是否有 .Net StyleCop 规则警告有关 lock(this)、lock(typeof、lock( 等) 的问题?

    这三种类型的锁显然都是不好的 还有哪些其他类型的锁定是不好的 有 Stylecop FxCop 规则可以解决这个问题吗 如果没有 那么您能帮我实现自定义规则吗 他们的代码一定是相似的 对吧 谢谢 The samples http dtt w
  • 使用 Hibernate 保存点

    问题是我在临时基础上使用休眠中的保存或更新 现在 当我最终触发更新时 它会将其永久存储在数据库中 否则回滚它 如何使用 hibernate 基础创建保存点是 spring like HibernateTemplate hibernateTe
  • Python 在输出中添加额外的换行符

    输入文件 a txt aaaaaaaaaaaa bbbbbbbbbbb cccccccccccc 蟒蛇代码 with open a txt as f for line in f print line 问题 aaaaaaaaaaaa bbbb
  • 滚动到 puppeteer 中 div 的底部不起作用

    所以我试图抓取下图中方框内的所有音乐会 https i stack imgur com 7QIMM jpg https i stack imgur com 7QIMM jpg 问题是列表仅显示前 10 个选项 直到您在该特定 div 中向下
  • 打开 XML 更改表格的字体大小

    for var i 0 i lt data GetUpperBound 0 i var tr new DocumentFormat OpenXml Wordprocessing TableRow for var j 0 j lt data
  • 如何控制 Linq to SQL 发出的“SET”语句

    有什么方法可以控制 Linq to SQL 发出的 SET 语句吗 我在 SQL 分析器中看到这些来自 Linq to SQL 的 SET 选项 结果发现 set arithabort off 导致我们的过程之一花费 45 秒而不是 net
  • 数据库表中ID列的命名

    我想知道人们对数据库表中 ID 列的命名有何看法 如果我有一个名为 Invoices 的表 其中包含一个标识列的主键 我会将该列称为 InvoiceID 这样就不会与其他表发生冲突 而且它是什么很明显 我目前工作的地方他们已将所有 ID 列
  • getResourceAsStream() 返回 null

    我有以下问题 InputStream input FileHandle class getResourceAsStream data sounds back ogg 返回 null 但是 InputStream input FileHand
  • 带破折号的 Asp.net Web Api 查询字符串参数

    我有一个Web Apisearch 方法接收以下参数 DataContract Namespace Name search public class SearchParameters DataMember Name property nam
  • Ruby 和 IMAP - 使用 Oauth 2.0 访问 Office 365

    因此众所周知 MS 禁用了 IMAP 进行基本身份验证 我试图弄清楚如何使用 ruby 而不是 ruby on Rails 让 OAUTH 2 0 工作 我有 Azure APP 和所需的一切 我认为 但我找不到与 ruby 和获取访问令牌
  • 如何使用 PowerShell 更改文件夹选项“打开文件资源管理器到”

    我正在寻找一种使用 PowerShell 脚本来更改此设置的方法 默认设置是快速访问而且我要This PC 我看了一些帖子 但没有人想要这样的东西 如何使用 PowerShell 更改文件夹选项设置 您需要设置LaunchTo注册表项下的属
  • 删除 WPF DataGrid 中的一行

    我有一个数据网格 其中删除图标作为一列 更新图标作为另一列 单击更新后 第一个单元格将获得焦点 单击删除时 我想删除所选行 但收到 错误 使用 ItemsSource 时操作无效 改为使用 ItemsControl ItemsSource
  • Excel中的VBA代码使标签之间的文本变为粗体

    我有一个 csv 文件 其中包含 html 标签 和 来表示粗体文本 即这些标签之间的几个单词 在单元格内较长的文本块中 应该是粗体 有没有办法在Excel中使用vba代码来剥离标签并使标签之间的文本变为粗体 注意 给定单元格内有时存在多组
  • 等待所有工作线程结束[重复]

    这个问题在这里已经有答案了 可能的重复 C 线程 锁混淆 https stackoverflow com questions 1280723 c sharp threading lock confusion 我有以下问题 我有一个监视类 它