如何在 C++ 中使用 MethodInvoker?

2023-12-24

我有一个 C++/CLI 应用程序,它有一个后台线程。我经常希望它把结果发布到主 GUI 上。我读了SO 上的其他地方 https://stackoverflow.com/questions/1136399/how-to-update-textbox-on-gui-from-another-thread-in-cMethodInvoker 可以用于此目的,但我正在努力将语法从 C# 转换为 C++:

    void UpdateProcessorTemperatures(array<float>^ temperatures)
    {
        MethodInvoker^ action = delegate
        {
            const int numOfTemps = temperatures->Length;
            if( numOfTemps > 0 ) { m_txtProcessor2Temperature->Text = temperatures[0]; } else { m_txtProcessor2Temperature->Text = "N/A"; }
            if( numOfTemps > 1 ) { m_txtProcessor2Temperature->Text = temperatures[1]; } else { m_txtProcessor2Temperature->Text = "N/A"; }
            if( numOfTemps > 2 ) { m_txtProcessor2Temperature->Text = temperatures[2]; } else { m_txtProcessor2Temperature->Text = "N/A"; }
            if( numOfTemps > 3 ) { m_txtProcessor2Temperature->Text = temperatures[3]; } else { m_txtProcessor2Temperature->Text = "N/A"; }
        }
        this->BeginInvoke(action);
    }

...给我:

1>c:\projects\MyTemperatureReporter\Form1.h(217) : error C2065: 'delegate' : undeclared identifier
1>c:\projects\MyTemperatureReporter\Form1.h(217) : error C2143: syntax error : missing ';' before '{'

我在这里缺少什么?


C++/CLI 不支持匿名委托,这是 C# 独有的功能。您需要在类的单独方法中编写委托目标方法。您还需要声明委托类型,MethodInvoker 无法完成这项工作。让它看起来像这样:

    delegate void UpdateTemperaturesDelegate(array<float>^ temperatures);

    void UpdateProcessorTemperatures(array<float>^ temperatures)
    {
        UpdateTemperaturesDelegate^ action = gcnew UpdateTemperaturesDelegate(this, &Form1::Worker);
        this->BeginInvoke(action, temperatures);
    }

    void Worker(array<float>^ temperatures) 
    {
        const int numOfTemps = temperatures->Length;
        // etc..
    }
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在 C++ 中使用 MethodInvoker? 的相关文章

  • 当文件已存在时无法创建该文件

    我正在使用 Winforms 并且尝试将文件从一个位置复制到另一个位置 如果同名文件已经存在 我想覆盖它 但我收到类似 当文件已存在时无法创建文件 的错误 我想覆盖该文件 我应该怎么办 我试过File copy代替File move 但我遇
  • Roslyn 将内容嵌入到程序集中

    是否可以嵌入content使用 roslyn 进入程序集 嵌入资源效果很好 但不知道如何添加内容 我添加这样的资源 foreach string file in Directory GetFiles inputPath Where item
  • 如何使用反应式扩展同时读取交错文件

    我是反应式扩展的新手 我想使用它 在 c 中 来读取包含多个交错流的文件 基本上文件的格式是ABCDABCDABCD 我更喜欢按顺序读取文件并分离流 即AAA BBB 等 并并行处理每个流 为每个流使用单独的线程 必须有某种形式的缓冲来确保
  • JTable过滤后正确的行号

    这是一个 try 块 用于过滤 table job 以查找与关键字匹配的行 但是 当表模型发生变化时 我很难获得正确的行索引 它始终选择第一行 即使过滤结果显示的行不是第一行 我知道你可以做一些事情fireTableDataChanged
  • 这可以用 Moq 来嘲笑吗?

    我正在努力模拟一些外部依赖项 并且在一个第三方类中遇到了麻烦 该类在其构造函数中接收另一个第三方类的实例 希望 SO 社区能给我一些指导 我想创建一个模拟实例SomeRelatedLibraryClass它的构造函数接受一个模拟实例Some
  • MVVM Light Toolkit 抛出 System.IO.FileLoadException

    我正在运行 VS 2010 和 Expression Blend 4 beta 我从提供的模板创建了一个 MVVM Light 项目 当我尝试在 VS 2010 设计器窗口中查看 MainWindow Xaml 时 出现 System IO
  • 如何检索 ComboBox 选定的值作为枚举类型?

    这是我的Enum code public enum EmployeeType Manager Worker 我将初始化ComboBox值 而表单将自身初始化为 combobox1 ItemsSource Enum GetValues typ
  • .net core 1.1 中嵌入的 power bi

    目前 我正在尝试在 Visual Studio 2017 中为我的 net core 1 1 项目导入 powerbi 包 但是 我收到以下错误 Install Package Package Microsoft PowerBI Core
  • 转义字符串中的反斜杠

    我想知道什么是转义字符串中的反斜杠而不添加不必要的斜杠的好方法 我的意思是 通常如果我想转义字符串中的反斜杠 最简单的方法是使用String Replace 像这样 string s someString Replace 可以使用正则表达式
  • 如何通过ConfigurationManager找到配置文件位置?

    如何通过ConfigurationManager找到配置文件位置 我在代码中有 ConfigurationManager 类 并且正在调试它 我想知道它指向哪个配置文件 web config 或 app config 等 Configura
  • 有没有办法在 C# 中仅通过文件名查找文件?

    我们现在使用绝对路径或相对路径在 C 应用程序中查找文件 如果文件位于当前工作目录下或 路径 之一下 有没有办法仅通过名称查找文件 使用绝对路径不好 使用相对路径也不够好 因为我们可能通过重命名或移动项目文件夹来更改项目结构 如果我们的代码
  • 将固定文档/XPS 打印为 PDF,而不显示文件保存对话框

    我有一个FixedDocument我允许用户在 WPF GUI 中预览 然后打印到纸张上 而不显示任何 Windows 打印对话框 如下所示 private void Print PrintQueueCollection printQueu
  • 用户如何在winforms运行时调整控件大小

    假设我有一个图片框 现在我想要的是用户应该能够随意调整图片框的大小 但是我不知道如何开始做这件事 我搜索过互联网 但信息很少 有人至少可以指导我从哪里开始吗 这很容易做到 Windows 中的每个窗口都具有与生俱来的可调整大小的能力 它刚刚
  • 从 WCF 服务返回接口

    我有一些 NET 远程处理代码 其中在某些服务器端类中实现的工厂方法返回具体对象的接口 也在同一台服务器上执行 NET 远程处理会自动创建代理 并允许我将接口传递给客户端 然后客户端可以直接调用它们 接口示例 public interfac
  • .NET 中的错误和异常有什么区别?

    您能向我解释一下错误和异常之间的区别吗 一个例外是利用语言语义的类 正如其他人所说 异常会中断堆栈的执行 直到被捕获 一个例外can用于传达错误 但更一般地用于传达发生了异常情况 另一方面 错误可能是异常的 也可能不是异常的 错误有以下几种
  • 了解 C# 中的协变和逆变接口

    我在一本有关 C 的教科书中遇到过这些内容 但我很难理解它们 可能是由于缺乏上下文 对于它们是什么以及它们有什么用处 是否有一个很好的简洁解释 编辑以澄清 协变接口 interface IBibble
  • 实体框架中的 DbSet [重复]

    这个问题在这里已经有答案了 我在实体框架中有以下代码 using var dbc new TestDbContext var data from a in dbc tableList select new a id ToList 当我调试代
  • 有没有办法将对象(及其属性)序列化为 xml?

    创建一个类 将其命名为 FormElement 该类应该具有一些属性 例如它们具有数据元素的元数据 名称 序列号 值 只是一个字符串等 该类具有验证应用程序块验证类类型的属性 我想将其序列化为xml并反序列化 验证类的所有属性 包括验证应用
  • Visual Studio '17 未在参考管理器中显示程序集

    我遇到的问题是 我似乎无法弄清楚如何添加对某些解决方案的引用 在我从 Visual Studio 17 开始的大多数解决方案中 我在解决方案资源管理器中看到 引用 但例如对于 asp net core web api 我得到 依赖项 每当解
  • Ruby:基于控制台的菜单

    我有一个名称和 URL 数组 并希望以向上 向下滚动菜单的形式向用户呈现名称列表 基本上是什么dialog允许在外壳内 我调查过ncurses ruby rdialog and HighLine但它们似乎要么作为一个项目被放弃 要么甚至从它

随机推荐

  • 如何将 StrLn 放入 Data.ByteString.Internal.ByteString?

    我正在学习 Haskell 并决定尝试编写一些小型测试程序来习惯 Haskell 代码和使用模块 目前 我正在尝试使用第一个参数来使用 Cypto PasswordStore 创建密码哈希 为了测试我的程序 我尝试从第一个参数创建一个散列
  • 将列添加到数据库 - 如何更新 dbml 文件?

    有没有一种方法可以刷新 dbml 文件 还是必须删除它并生成一个全新的文件 据我所知 设计器中没有内置功能可以使用数据库中的更改来更新表 有第三方工具 http www huagati com dbmltools http www huag
  • 跳过列表,它们真的像 Pugh 论文声称的那样好吗?

    我正在尝试使用最小的额外内存开销来实现一个与 BST 一样好的跳过列表 目前即使不考虑任何内存限制 我的 SkipList 实现的性能也与非常幼稚的平衡 BST 实现相去甚远 可以这么说 手工制作的 BTS 作为参考 我使用 William
  • Domain=NSURLErrorDomain Code=-1021“请求正文流已耗尽”

    我收到 NSURLErrorDomain Code 1021 请求正文流已耗尽 NSLocalizedDescription 请求正文流耗尽 NSUnderlyingError 0x2088c080 请求正文流耗尽 上传多张大尺寸图片时会出
  • 使用animateTransform时如何指定x-y旋转点?

    我想使用 animateTransform 连续旋转 SVG 图像 那么我们开始吧
  • 使用 c# webrequest 与 asp.net mvc 3 网站交互

    我通过这些操作创建了一个带有家庭控制器的简单 mvc3 站点 public JsonResult Param string id string upper String Concat id ff return Json upper publ
  • Hibernate Criteria 按特定状态排序

    你好 在数据库中 我们有一个 PRSN ADDRESS 表 其中包含许多地址 用户会在网格中看到这些地址 要求是首先显示与该用户的状态关联的地址 然后显示所有其他状态 例如 假设该表有 10 条记录 其中 5 个地址的州为马里兰州 2 个来
  • Visual Basic 将数据作为 json 对象发送到 api

    美好的一天 我尝试将数据作为 json 对象发送到 api Content Type application json Authorization Bearer ACCESS TOKEN d datetime 2021 02 21 14 0
  • 从 WebAPI 控制器获取声明 - JWT 令牌,

    我在 ASP NET Core 中构建了一个使用 JWT 承载身份验证的应用程序 进行身份验证时 我定义了一些自定义声明 我需要在另一个 WebAPI 控制器中读取这些声明才能执行某些操作 有什么想法我怎样才能实现这一目标 这就是我的代码的
  • .net webapi HttpGet 与 HttpPost。为什么使用 HttpGet?

    为什么在WebApi框架中使用HttpGet而不是HttpPost 我很清楚 Post 或 Get 类型之间的区别 一个是通过 url 另一个不是 作为基本理解 但我也知道主要区别 可以在服务器上编辑 是 Post 对发送到服务器的数据大小
  • 如何在 HSQLDB GUI 中执行多个命令?

    我想从 GUI 执行许多命令 我想做很多这样的小组 但我无法让一个小组工作 我想我需要以某种方式强制他们之间的提交 但我不知道如何做到这一点 如果我按顺序单独执行这些命令中的每一个 一切都会按预期进行 我正在使用EPSG dat来自 Geo
  • Google Cloud Vision 的 Advanced_ocr_options[] 是什么?

    我正在尝试查找有关的任何信息advanced ocr options under of ImageContext https cloud google com vision docs reference rest v1 ImageConte
  • uWSGI根据环境变量设置配置

    请帮助我理解uWSGI配置逻辑 我有一个环境变量ENVIRONMENT 假设它的值可以是dev or prod 我想根据以下值设置配置选项ENVIRONMENT always executes print statement doesn t
  • 重塑数组中的数组

    我有一个由 40 个数组组成的数组 每个数组都有 1x150 的形状 有没有办法重塑数组 以便我有 40 个 3x50 数组的数组 我不确定是否有一种方法可以使用 np reshape 并在一行中完成 是吗 这真的是一个arraynp ar
  • Qt 中的 QPointer、QSharedPointer 和 QWeakPointer 类有什么区别?

    我从 Qt 文档中读到了有关QPointer QSharedPointer and QWeakPointer类 它说 QPointer是一个模板类 它为 Qt 对象提供受保护的指针 其行为类似于普通的 C 指针 只不过当引用的对象被销毁并且
  • 如何限制正则表达式捕获组?

    我不明白如何限制捕获组 如果我有这样的正则表达式 w 2 s w 2 4 15 我认为这会捕获任何字符串 正好两个字 每个单词至少 2 个字符长 并且整个字符串不超过 15 个字符 但是我的捕获组的限制不起作用 我可以限制捕获组吗 附言 我
  • 使用golang http包时如何限制客户端IP地址

    我正在使用 golanghttp包裹 服务器如何限制客户端IP地址 func s Worker Run c chan error apiMux http NewServeMux apiMux HandleFunc test s test a
  • 如何向 NSDictionary 添加布尔值?

    好吧 对于整数我会使用NSNumber 但我猜 YES 和 NO 不是对象 AFAIK 我只能将对象添加到NSDictionary right 我找不到任何布尔值的包装类 有没有 您使用 NSNumber 它有 init 和 number
  • 如何在 debian 64 位上正确安装 wkhtmltopdf?

    我正在尝试安装 wkhtmltopdf 但是当我这样做时 sudo dpkg i wkhtmltox 0 12 1 linux trusty amd64 deb I get Preparing to unpack wkhtmltox 0 1
  • 如何在 C++ 中使用 MethodInvoker?

    我有一个 C CLI 应用程序 它有一个后台线程 我经常希望它把结果发布到主 GUI 上 我读了SO 上的其他地方 https stackoverflow com questions 1136399 how to update textbo