如何等待后台工作者完成处理?

2023-12-07

我有 3 个后台工作人员,每个工作人员处理 24 位位图图像的一个通道(Y、Cb、Cr)。每个 8 位图像的处理需要几秒钟,并且可能不会同时完成。

完成后我想将通道合并回一张图像。当单击按钮时,每个backgroundWorkerN.RunWorkerAsync()开始,当它们完成时,我将一个标志设置为 true。我尝试使用 while 循环while (!y && !cb && !cr) { }不断检查标志,直到它们为真,然后退出循环并继续处理下面的代码,该代码是将通道重新合并在一起的代码。但当我运行它时,该过程永远不会结束。

   private void button1_Click(object sender, EventArgs e)
   {
        backgroundWorker1.RunWorkerAsync();
        backgroundWorker2.RunWorkerAsync();
        backgroundWorker3.RunWorkerAsync();

        while (!y && !cb && !cr) { }

        //Merge Code
   }

根据 Renuiz 的回答,我会这样做:

private object lockObj;

private void backgroundWorkerN_RunWorkerCompleted(
    object sender, 
    RunWorkerCompletedEventArgs e)
{
    lock (lockObj)
    {
        y = true;
        if (cb && cr) // if cb and cr flags are true - 
                      // other backgroundWorkers finished work
        {
            someMethodToDoOtherStuff();
        }
    }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何等待后台工作者完成处理? 的相关文章

  • 使用 gcc 在 Linux 上运行线程构建块 (Intel TBB)

    我正在尝试为线程构建块构建一些测试 不幸的是 我无法配置 tbb 库 链接器找不到库 tbb 我尝试在 bin 目录中运行脚本 但这没有帮助 我什至尝试将库文件移动到 usr local lib 但这又失败了 任何的意见都将会有帮助 确定您
  • BASIC 中的 C 语言中的 PeekInt、PokeInt、Peek、Poke 等效项

    我想知道该命令的等效项是什么Peek and Poke 基本和其他变体 用 C 语言 类似PeekInt PokeInt 整数 涉及内存条的东西 我知道在 C 语言中有很多方法可以做到这一点 我正在尝试将基本程序移植到 C 语言 这只是使用
  • STL 迭代器:前缀增量更快? [复制]

    这个问题在这里已经有答案了 可能的重复 C 中的预增量比后增量快 正确吗 如果是 为什么呢 https stackoverflow com questions 2020184 preincrement faster than postinc
  • 根据属性的类型使用文本框或复选框

    如果我有这样的结构 public class Parent public string Name get set public List
  • 通过引用传递 [C++]、[Qt]

    我写了这样的东西 class Storage public Storage QString key const int value const void add item QString int private QMap
  • 机器Epsilon精度差异

    我正在尝试计算 C 中双精度数和浮点数的机器 epsilon 值 作为学校作业的一部分 我在 Windows 7 64 位中使用 Cygwin 代码如下 include
  • 如何从 Visual Studio 将视图导航到其控制器?

    问题是解决方案资源管理器上有 29 个项目 而且项目同时具有 ASP NET MVC 和 ASP NET Web 表单结构 在MVC部分中 Controller文件夹中有大约100个子文件夹 每个文件夹至少有3 4个控制器 视图完全位于不同
  • std::vector 与 std::stack

    有什么区别std vector and std stack 显然 向量可以删除集合中的项目 尽管比列表慢得多 而堆栈被构建为仅后进先出的集合 然而 堆栈对于最终物品操作是否更快 它是链表还是动态重新分配的数组 我找不到关于堆栈的太多信息 但
  • 为什么 GCC 不允许我创建“内联静态 std::stringstream”?

    我将直接前往 MCVE include
  • WPF 数据绑定到复合类模式?

    我是第一次尝试 WPF 并且正在努力解决如何将控件绑定到使用其他对象的组合构建的类 例如 如果我有一个由两个单独的类组成的类 Comp 为了清楚起见 请注意省略的各种元素 class One int first int second cla
  • 人脸 API DetectAsync 错误

    我想创建一个简单的程序来使用 Microsoft Azure Face API 和 Visual Studio 2015 检测人脸 遵循 https social technet microsoft com wiki contents ar
  • 使用 C# 中的 CsvHelper 将不同文化的 csv 解析为十进制

    C 中 CsvHelper 解析小数的问题 我创建了一个从 byte 而不是文件获取 csv 文件的类 并且它工作正常 public static List
  • 结构体的内存大小不同?

    为什么第一种情况不是12 测试环境 最新版本的 gcc 和 clang 64 位 Linux struct desc int parts int nr sizeof desc Output 16 struct desc int parts
  • C# xml序列化必填字段

    我需要将一些字段标记为需要写入 XML 文件 但没有成功 我有一个包含约 30 个属性的配置类 这就是为什么我不能像这样封装所有属性 public string SomeProp get return someProp set if som
  • LINQ:使用 INNER JOIN、Group 和 SUM

    我正在尝试使用 LINQ 执行以下 SQL 最接近的是执行交叉联接和总和计算 我知道必须有更好的方法来编写它 所以我向堆栈团队寻求帮助 SELECT T1 Column1 T1 Column2 SUM T3 Column1 AS Amoun
  • 对于某些 PDF 文件,LoadIFilter() 返回 -2147467259

    我正在尝试使用 Adob e IFilter 搜索 PDF 文件 我的代码是用 C 编写的 我使用 p invoke 来获取 IFilter 的实例 DllImport query dll SetLastError true CharSet
  • 为什么C++代码执行速度比java慢?

    我最近用 Java 编写了一个计算密集型算法 然后将其翻译为 C 令我惊讶的是 C 的执行速度要慢得多 我现在已经编写了一个更短的 Java 测试程序和一个相应的 C 程序 见下文 我的原始代码具有大量数组访问功能 测试代码也是如此 C 的
  • C# 中最小化字符串长度

    我想减少字符串的长度 喜欢 这串 string foo Lorem ipsum dolor sit amet consectetur adipiscing elit Aenean in vehicula nulla Phasellus li
  • 在OpenGL中,我可以在坐标(5, 5)处精确地绘制一个像素吗?

    我所说的 5 5 正是指第五行第五列 我发现使用屏幕坐标来绘制东西非常困难 OpenGL 中的所有坐标都是相对的 通常范围从 1 0 到 1 0 为什么阻止程序员使用屏幕坐标 窗口坐标如此严重 最简单的方法可能是通过以下方式设置投影以匹配渲
  • MySQL Connector C/C API - 使用特殊字符进行查询

    我是一个 C 程序 我有一个接受域名参数的函数 void db domains query char name 使用 mysql query 我测试数据库中是否存在域名 如果不是这种情况 我插入新域名 char query 400 spri

随机推荐

  • 谷歌 protobuf 和 A​​ndroid NDK

    如何构建Google protobuf c 版本 https github com google protobuf releases latest 与 Android 目标 我在没有 ndk build 的情况下编译了 protobuf 这
  • 在jsp中显示数据

    我是jsp新手 面临一个问题 我需要创建 jsp 页面 显示来自 servlet 的数据 Servlet 代码 protected void doGet HttpServletRequest request HttpServletRespo
  • 尝试到达应用程序引擎端点时出现 SSLHandshakeException

    我正在尝试从 Android 客户端连接到我的端点方法之一到本地运行的应用程序引擎后端 问题是我收到 SSLHandshakeException 我的 API 不受 OAuth 保护 我试图达到的方法如下所示 ApiMethod name
  • 从被调用方法捕获异常

    关于程序流程 这个问题已经困扰我一段时间了 我想知道是否可以从方法中捕获错误 以阻止它执行通常遵循它的方法 如下例所示 我无法开始工作 public class MyClass public static void main String
  • 忽略 py2exe 中的library.zip

    我需要一个可执行文件 exe 它从文件中获取一些参数 用户可以根据他 她的需要配置这些参数 由于我在 python 中创建了脚本 因此我使用 py2exe 来创建该可执行文件 虽然我可以放置一个名为的可配置文件设置 dat作为数据文件并用它
  • 如何将 jackson objectmapper dateformat 配置添加到 spring mvc 配置中?

    我有一个关于 Jackson 2 1 的问题 我的 pojo 有一些日期属性 我想将其转换为字符串 我将其解决在 spring servlet xml 中 但它没有用 我不喜欢使用 JsonSerialize using JsonDateS
  • Android:从特定电话号码接收短信

    我的应用程序是否可以从特定电话号码接收短信 而不让它触发系统通知 但让所有其他消息传递到默认短信应用程序进行正常处理 如果是这样 系统如何知道哪个进程首先进入队列来选择接收哪些消息 我没有尝试这个 但理论上它应该有效 在 Android 中
  • 如何从 Java 中的 JSON 字符串中删除元素?

    我有一个 json 作为字符串 我需要使用 java 代码从中删除一个元素 感谢你的帮助 Example 尝试了数组和其他东西 但没有运气 输入 需要删除图像 widget debug on window title Sample Konf
  • 复制 java.util.Random 类型的实例变量以创建相同状态的对象

    我正在实施一个模拟退火 SA 算法 我需要复制状态 例如记住迄今为止的最佳解决方案 我实现了一个复制方法 因为不鼓励使用java的clone SA 是一种启发式算法 因此下一步要采取的步骤是随机确定的 这是通过使用Random对象 我也想复
  • 如何在 Windows 10 上使用 IPC::Run 捕获超时异常?

    我正在尝试捕获超时异常IPC Run在 Windows 10 上 使用 Strawberry Perl 版本 5 30 1 use strict use warnings use feature qw say use Data Dumper
  • 最小化工作簿/工作表但保持表单打开

    有没有办法最小化工作簿 工作表但能够保持表单打开 我已经尝试过代码 application visible false and userform1 show vbmodeless 但这会隐藏所有活动的工作簿 并且工具栏功能区也会消失 有没有
  • 获取属于个人 Triadic Census 类别的 Triad 节点列表

    通过执行 Networkx triadic census 算法 我可以获得每种类型的三元普查中节点数量的字典 triad census social nx triadic census social graph to directed 现在
  • 虚函数 C#

    我明白什么是虚函数 但我不明白的是他们内部是如何工作的 class Animal virtual string Eat return Eat undefined class Human Animal override string Eat
  • PDFTK 并删除 XFA 格式

    从 PDF 表单中删除 XFA 格式是否会出现任何问题 我正在使用 PDFTK 来填写表单 发现如果表单是 XFA 则 PDFTK 不起作用 除非我先执行 drop xfa 命令来创建新的模板表单 我注意到的一件事是 如果我不执行 drop
  • 是否可以从 .NET Framework 项目引用 .NET 5 项目?

    我有一些相当大的 NET Framework 应用程序想要升级到 NET 5 但一次性升级它们会很麻烦 我正在考虑逐步做到这一点 从应用程序中最 核心 的项目开始 然后从那里开始工作 但这似乎不起作用 当我尝试从 NET Framework
  • 根据组计算存在/缺席情况

    我有一个数据框 其中包含两个位置的许多物种的丰度数据 sp1 sp2 sp3 sp4 SiteA 0 12 0 0 SiteA 0 3 0 0 SiteA 1 0 0 0 SiteB 0 0 6 0 SiteB 2 1 1 0 SiteB
  • 如何使用信号将 python 字典发送到 QML 接口?

    我想发送字典 其中包含动态创建 qml 对象所需的数据 从 PySide2 类发送到 QML 接口 并且由于我需要响应某些事件来执行此操作 因此我需要使用信号和槽 由于我刚刚开始使用 QML 和 python 我尝试创建一个简单的项目只是为
  • 浏览器同步无头环境错误

    所以我刚刚开始学习 Angular 2 并运行之后npm installgit bash 上的命令并打开我的文本编辑器 我试图运行npm start命令启动 typescript 和 lite 服务器 一切都很顺利 直到出现这个错误 1 B
  • Scala/Slick 普通 SQL:以映射形式检索结果

    我有一个简单的方法可以使用 Sclick 纯 SQL 方法从数据库检索用户 object Data implicit val getListStringResult GetResult List String prs gt 1 to prs
  • 如何等待后台工作者完成处理?

    我有 3 个后台工作人员 每个工作人员处理 24 位位图图像的一个通道 Y Cb Cr 每个 8 位图像的处理需要几秒钟 并且可能不会同时完成 完成后我想将通道合并回一张图像 当单击按钮时 每个backgroundWorkerN RunWo