如何休眠线程直到收到异步函数的回调?

2023-11-24

我有一个函数,仅当从异步函数接收到回调时才需要执行。

Like

我调用异步函数Stop()不久之后我调用异步函数Start().

收到 Stop CallBack 之前的问题Start()被调用,因此我遇到了问题。我也无法分开调用两个函数,就像我不能这样做一样:

public void SomeFunction()
{
    Stop();
}  

public void Stop_CallBack(eventargs e)
{
    Start();
}

我必须这样做:

public void SomeFunction()
{

  Stop();
  //Do something;

  Start();
}

但在我收到 Stop 回调之前,我的 start() 函数已执行,从而给我带来了问题。

谁能帮我解决这个问题。


这是您想要使用等待句柄的时候。这是一个简短的代码示例,展示了一种方法:

class AsyncDemo
{
    AutoResetEvent stopWaitHandle = new AutoResetEvent(false);
    public void SomeFunction()
    {    
        Stop();
        stopWaitHandle.WaitOne(); // wait for callback    
        Start();
    }
    private void Start()
    {
        // do something
    }
    private void Stop()
    {
        // This task simulates an asynchronous call that will invoke
        // Stop_Callback upon completion. In real code you will probably
        // have something like this instead:
        //
        //     someObject.DoSomethingAsync("input", Stop_Callback);
        //
        new Task(() =>
            {
                Thread.Sleep(500);
                Stop_Callback(); // invoke the callback
            }).Start();
    }

    private void Stop_Callback()
    {
        // signal the wait handle
        stopWaitHandle.Set();
    }

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

如何休眠线程直到收到异步函数的回调? 的相关文章

  • 并行运行多个任务

    我有一个代理列表 每个代理都会访问不同的站点并从站点中提取所需的数据 目前它一次只做一个 但我希望同时运行 10 20 个任务 这样它就可以一次性从 20 个站点下载 而不是只下载一个 这是我目前正在做的事情 private async T
  • SOAP Web 服务:多台服务器,一个接口

    我有一个场景 需要任意数量的服务器来提供相同的 SOAP Web 服务 我想生成一组代理类 并能够为它们提供一个位置 以便在运行时将它们指向不同的服务器 不幸的是 看起来好像wsdl port节点 子节点wsdl service 要求对特定
  • 无法在 CUDA 中找到 1 到 100 数字的简单和?

    我正在研究使用 CUDA 的图像处理算法 在我的算法中 我想使用 CUDA 内核找到图像所有像素的总和 所以我在cuda中制作了内核方法 来测量16位灰度图像的所有像素的总和 但我得到了错误的答案 所以我在cuda中编写了一个简单的程序来查
  • 如何从经过身份验证的 SecurityToken 中获取声明

    我将令牌作为字符串传递到 SOAP 服务中 并验证了该令牌是否有效 我现在有一个 SecurityToken 在调试模式下我可以看到所有声明 特别是我想传递到另一个方法的 userId 声明 我似乎不知道如何获得这些索赔 现在 我解码了令牌
  • CMake(Ninja 后端)使用 /MT 编译

    我有一个类似的问题CMake 使用 MT 而不是 MD 进行编译 https stackoverflow com questions 14172856 cmake compile with mt instead of md但有一些差异 我正
  • Visual Studio 2013 调试器显示 std::string 的奇怪值

    我有一个大型的 cmake 生成的解决方案 其中包含许多项目 由于某种原因 我无法查看字符串的内容 因为根据调试器 Bx Buf含有一些垃圾 text c str 正确返回 Hello 该问题不仅仅发生在本地字符串上 返回的函数std st
  • C# 结构默认值

    我有一个方法 它接受一个包含许多具有基本数据类型的字段的结构 我想传递大部分默认值 但需要进行一些调整 但我了解结构声明中的基本字段不能包含默认值声明 例如struct S int a 42 现在是这样的 OptionsStruct opt
  • 大量互斥体对性能的影响

    假设我有一个包含 1 000 000 个元素的数组 以及多个工作线程 每个线程都操作该数组中的数据 工作线程可能会使用新数据更新已填充的元素 但每个操作仅限于单个数组元素 并且独立于任何其他元素的值 使用单个互斥锁来保护整个数组显然会导致高
  • 如何在 C++ 中正确使用 cin.fail()

    我正在编写一个程序 从用户那里获取整数输入cin gt gt iUserSel 如果用户输入一个字母 程序就会进入无限循环 我试图用下面的代码来阻止这种情况 但程序进入无限循环并打印出 错误 输入 我该如何修复我的程序 cin gt gt
  • 如何从 Powerpoint 2010 导出电影?

    如何使用 MS Office PIA 主互操作程序集 或其他方式以编程方式将嵌入视频从 powerpoint 2010 导出到外部文件 在演示文稿中嵌入视频是 Powerpoint 2010 中的一项新功能 我找不到解决方案 PPTX 文件
  • 为什么连续抛出 2 个异常不会生成无法访问的代码警告?

    为什么以下代码行不会创建编译器警告 void Main throw new Exception throw new Exception 据我所知 编译器应该通知您无法到达第二个抛出异常 这显然是一个编译器错误 它是在 C 3 0 中引入的
  • fgets溢出后如何清除输入缓冲区?

    当输入字符串超出其预定义限制时 我遇到了 fgets 的小问题 以下面的例子为例 for index 0 index lt max index printf Enter the d string index 1 if fgets input
  • 如何在VS2005中使用从.bat而不是.exe启动的外部程序进行调试?

    在我的 c 项目的调试属性中 我选择了 启动外部程序 并选择了我希望将调试器附加到的程序的 exe 但是 现在我需要从 bat 文件而不是 exe 启动程序 但 VS2005 似乎不允许这样做 这可能吗 编辑 为了澄清 我需要调试从 bat
  • C++网络序列化[关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我正在寻找一种将 C 数据包序列化为网络流的解决方案 我在这里看到很多帖子提到人们 ACE 谷歌协议缓
  • Clang 5.0 上的 vsprintf 和 vsnprintf [-Wformat-nonliteral] 警告

    我有这段代码 static void err doit int errnoflag int level const char fmt va list ap int errno save unsigned long n char buf MA
  • g++ / gcc 是否支持 C++20 新的atomic_flag 功能?

    根据参考参数 https en cppreference com w cpp atomic atomic flag c 20 有丰富的 对我来说有用的 支持atomic flag运营 然而 目前尚不清楚 gcc 是否支持这些功能 它们在任何
  • 如何防止 Lotus Notes 用户转发或复制通过 System.Net.Mail 发送的邮件?

    我想使用 SMTP 客户端 uiing microsft net 以 C 作为编程语言发送电子邮件 但是对于通过SMTP客户端发送的电子邮件 我们是否可以添加 禁止转发 或 禁止复制 等安全功能 我不希望电子邮件的收件人转发或复制电子邮件的
  • 稀疏矩阵超定线性方程组c/c++库

    我需要一个库来解决 Ax b 系统 其中 A 是一个非对称稀疏矩阵 每行有 8 个条目 而且可能很大 我认为实现双共轭梯度的库应该没问题 但我找不到一个有效的库 我尝试过 iml 但 iml sparselib 包中缺少一些标头 有小费吗
  • 如何将模型绑定到动态创建的类 nancyfx

    首先感谢任何愿意查看我的问题的人 我对 Nancyfx 还很陌生 在尝试将 JSON 有效负载绑定到动态创建的类时遇到问题 我按照这篇文章中的代码动态创建了该类 在C 中动态创建一个类 https stackoverflow com que
  • 将同步 zip 操作转换为异步

    我们有一个现有的库 其中一些方法需要转换为异步方法 但是我不确定如何使用以下方法执行此操作 错误处理已被删除 该方法的目的是压缩文件并将其保存到磁盘 请注意 zip 类不公开任何异步方法 public static bool ZipAndS

随机推荐

  • 动态单选按钮控制

    代码 private void createRadioButton final RadioButton rb new RadioButton 5 for int i 0 i lt 5 i rb i new RadioButton this
  • 实体框架:单例 ObjectContext - 好、坏还是想太多?

    这个想法是创建一个公开上下文但处理它在 Web 应用程序中的存储的类 目前 这就是我所拥有的 public class EntityContext private static String MAIN CONTEXT KEY MainCon
  • GAE/J 请求日志格式细分

    以下是 GAE 控制台日志记录的示例 https i stack imgur com M2iJX png for readable high res version 我想提供文件的详细信息 显示在折叠 摘要 视图和展开 详细 视图中 我将填
  • 有人成功构建了 Cygwin 版本的 GHC 吗?

    有没有人成功构建了 GHC 的 Cygwin 版本 自从 Haskell 从使用 Cygwin 切换到 MinGW 来自哈斯克尔网站 GHC 的目标是 MinGW 而不是 Cygwin 原则上可以构建一个针对 Cygwin 的 GHC 版本
  • 将 HTML 源代码保存到文件

    如何在 Python 3 中将网站的源代码复制到文本文件中 编辑 为了澄清我的问题 我有以下内容 import urllib request def extractHTML url f open temphtml txt w page ur
  • malloced 数组 VS.malloced 数组可变长度数组[重复]

    这个问题在这里已经有答案了 有两种方法可以为数组分配内存 数组的大小一开始是未知的 最常见的方法是使用malloc像这样 int array when we know the size array malloc size sizeof in
  • 无法从“node_modules/expo/AppEntry.js”解析“../../App”

    我正在用 expo 制作一个 vue 原生应用程序 升级到 expo 版本 33 时 出现以下错误 无法从 node modules expo AppEntry js 解析 App 需要升级到版本 33 是 因为我需要 expo 文件系统模
  • 使用 LLVM 进行源到源编译[关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 目前不接受答案 我需要将 x86 汇编源代码转换为 LLVM 人类可读的 ll 文件 又名 LLVM 汇编语言 我怎样才能做到这一点 如果没有直接的解决方案 是否有
  • 将 json 提交到 MVC3 操作

    我有一个用 Knockout js 创建的表单 当用户按下提交按钮时 我将视图模型转换回模型并尝试提交到服务器 我试过 ko utils postJson location href ko toJSON viewModel 但该对象在到达服
  • 如何在 MySQL 上正确循环存储函数?

    我在正确执行一个非常简单的存储过程时遇到了一些困难 考虑以下文章表片段 id replaced by baseID 1 2 0 2 3 0 3 0 0 一个简单的分层表 使用写时复制 编辑文章时 当前文章的 Replaced by 字段将设
  • 为 Rest 客户端设置 Json 内容类型

    我正在使用用于 Android 的 Loopj 的 AsyncHttpClient 以便我可以与我创建的安静的 Web 应用程序进行交互 我已经使用 Postman 测试了 POST 请求 效果很好 然而 在 Android 中 我很难执行
  • 为什么我的 HashMap 允许重复键?

    嘿 我正在使用HashMap在公告板上跟踪服务和服务请求 但是 我的哈希码和等于错误 因为我得到了重复的键 谁能告诉我为什么会这样吗 keySet的内容 Services 1 1 6 6 3 Requests 8 7 6 5 8 4 5 6
  • 如何重置 CURLOPT_CUSTOMREQUEST

    我正在使用 REST API 除其他外 它使用DELETE像这样的方法 DELETE resources whatever items 123 为了使用 PHP 访问它 我使用 cURL 如下所示 self curl curl init c
  • Hashmap put(),它总是有序的吗?

    当我们将值添加到hashmap
  • 为什么 LINQ JOIN 比 WHERE 链接快得多?

    我最近升级到 VS 2010 并正在使用 LINQ to Dataset 我有一个用于授权的强类型数据集 位于 ASP NET Web 应用程序的 HttpCache 中 所以我想知道检查用户是否有权执行某些操作的最快方法是什么 Here是
  • 列表框“IsSelected”绑定仅部分工作

    我有一个ListBox我通过绑定动态填充 这是在DataTemplate 这就是绑定有些不寻常的原因
  • numpy 数组 C API

    我有一个返回 std vector 的 C 函数 我想在 python 中使用它 所以我使用 C numpy api static PyObject py integrate PyObject self PyObject args std
  • SAS proc导出到CSV:如何添加双引号

    刚接触这个 所以很抱歉 我有一个 SAS 文件 需要将其导出为 CSV 并且需要向所有字段添加双引号 我怎样才能做到这一点 提前致谢 从 SAS 创建 CSV 文件的方法有多种 使用proc export不会将每个字段都用双引号括起来 因此
  • 如何在 ruby​​ 中从外部访问类变量?

    我正在尝试从类外部的方法访问类变量 这是我的课 class Book bookCount 0 allBooks def self allBooks allBooks end def self bookCount bookCount end
  • 如何休眠线程直到收到异步函数的回调?

    我有一个函数 仅当从异步函数接收到回调时才需要执行 Like 我调用异步函数Stop 不久之后我调用异步函数Start 收到 Stop CallBack 之前的问题Start 被调用 因此我遇到了问题 我也无法分开调用两个函数 就像我不能这