control.BeginInvoke() 无法调用委托

2023-12-08

我注意到 control.BeginInvoke(delegate) 有时无法调用委托。据我了解,BeginInvoke 只是创建一条 PostMessage,该消息稍后由应用程序处理(默认情况下发布消息限制为 10,000)。鉴于我们的应用程序不是很复杂,是否还有其他原因导致它无法执行委托?我的代码如下所示。

class MyClass : Form{

    private bool executing = false;
    private delegate void DelegateBar(string info, int total, bool status, object obj);
    private void Bar(string info, int total, bool status, object obj){
        log("Enterning Bar");
        // Update something on UI
        executing = false;
        log("Exiting Bar");
    }
    public void foo(){
        log("Entering Foo");
        executing = true;
            try{
            // do something over the network
            }catch(Exception e){
                // probably network down. Lets not worry about it
            }
        DelegateBar barPtr = new DelegateBar(Bar);
        // Update UI .. call on form : form is a control
        this.BeginInvoke(barPtr, new object[] {"someInfo", 3, false, null});
        log("Exiting Fool");
    }

    public void callMeEveryFiveSeconds(){
        if(!executing) foo();
    }

    private delegate void DelegateCallMe();

    // execute every 5 seconds.
    private void timer1_Tick(object sender, EventArgs e)
    {
        Delegate del = new DelegateCallMe(callMeEveryFiveSeconds);
        // appoligies if syntax is not right, it to convey the idea that callMeEveryFiveSeconds is called on the main thread (asynchronously)
        this.beginInvoke(del, new object[]{});
    }
}

发布的代码对我来说看起来很好。如果这与您使用的代码不匹配,那么我建议寻找以下其中一项:

1)如果您的消费任务需要更长的时间,那么 FiveSeconds 方法会显得每次都没有被调用

2)如果消费任务和更新UI的组合导致每次都没有调用该方法

3) 如果消费任务中未显示的任何代码可能会改变执行的值(或退出该方法,因为它可以设置为 false)

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

control.BeginInvoke() 无法调用委托 的相关文章

  • 部署 MVC4 项目时出错:找不到文件或程序集

    过去 我只需使用 Visual Studio 2012 发布到 AWS 菜单项即可部署我的 MVC4 网站 到 AWS Elastic Beanstalk 现在 程序可以在本地编译并运行 但无法部署 从消息来看 它似乎正在寻找不在当前部署的
  • 如何在我的应用程序中使用 Windows Key

    Like Windows Key E Opens a new Explorer Window And Windows Key R Displays the Run command 如何在应用程序的 KeyDown 事件中使用 Windows
  • 跨多个控件共享事件处理程序

    在我用 C 编写的 Windows 窗体应用程序中 我有一堆按钮 当用户的鼠标悬停在按钮上时 我希望按钮的边框发生变化 目前我有以下多个实例 每个按钮一个副本 private void btnStopServer MouseEnter ob
  • C# 中可空类型是什么?

    当我们必须使用nullable输入 C net 任何人都可以举例说明 可空类型 何时使用可空类型 https web archive org web http broadcast oreilly com 2010 11 understand
  • 将字符串从非托管代码传递到托管

    我在将字符串从非托管代码传递到托管代码时遇到问题 在我的非托管类中 非托管类 cpp 我有一个来自托管代码的函数指针 TESTCALLBACK FUNCTION testCbFunc TESTCALLBACK FUNCTION 接受一个字符
  • 如何针对 Nancy 中的 Active Directory 进行身份验证?

    这是一篇过时的文章 但是http msdn microsoft com en us library ff650308 aspx paght000026 step3 http msdn microsoft com en us library
  • c 中的错误:声明隐藏了全局范围内的变量

    当我尝试编译以下代码时 我收到此错误消息 错误 声明隐藏了全局范围内的变量 无效迭代器 节点 根 我不明白我到底在哪里隐藏或隐藏了之前声明的全局变量 我怎样才能解决这个问题 typedef node typedef struct node
  • 当 Cortex-M3 出现硬故障时如何保留堆栈跟踪?

    使用以下设置 基于 Cortex M3 的 C gcc arm 交叉工具链 https launchpad net gcc arm embedded 使用 C 和 C FreeRtos 7 5 3 日食月神 Segger Jlink 与 J
  • 按字典顺序对整数数组进行排序 C++

    我想按字典顺序对一个大整数数组 例如 100 万个元素 进行排序 Example input 100 21 22 99 1 927 sorted 1 100 21 22 927 99 我用最简单的方法做到了 将所有数字转换为字符串 非常昂贵
  • A* 之间的差异 pA = 新 A;和 A* pA = 新 A();

    在 C 中 以下两个动态对象创建之间的确切区别是什么 A pA new A A pA new A 我做了一些测试 但似乎在这两种情况下 都调用了默认构造函数 并且仅调用了它 我正在寻找性能方面的任何差异 Thanks If A是 POD 类
  • 如何在 Team Foundation 上强制发表有意义的签入评论?

    我有一个开发团队有一个坏习惯 他们写道poor签入评论 当我们必须在团队基础上查看文件的历史记录时 这使得它成为一场噩梦 我已经启用了变更集评论政策 这样他们甚至可以在签到时留下评论 否则他们不会 我们就团队的工作质量进行了一些讨论 他们很
  • 线程、进程和 Application.Exit()

    我的应用程序由主消息循环 GUI 和线程 Task Factory 组成 在线程中我调用一些第三方应用程序var p new Process 但是当我调用Application Exit 在消息循环中 我可以看到在线程中启动的进程仍在内存中
  • 是否有比 lex/flex 更好(更现代)的工具来生成 C++ 分词器?

    我最近将源文件解析添加到现有工具中 该工具从复杂的命令行参数生成输出文件 命令行参数变得如此复杂 以至于我们开始允许它们作为一个文件提供 该文件被解析为一个非常大的命令行 但语法仍然很尴尬 因此我添加了使用更合理的语法解析源文件的功能 我使
  • 更改窗口的内容 (WPF)

    我创建了一个简单的 WPF 应用程序 它有两个 Windows 用户在第一个窗口中填写一些信息 然后单击 确定 这会将他们带到第二个窗口 这工作正常 但我试图将两个窗口合并到一个窗口中 这样只是内容发生了变化 我设法找到了这个更改窗口内容时
  • .NET 选项将视频文件流式传输为网络摄像头图像

    我有兴趣开发一个应用程序 它允许我从 xml 构建视频列表 包含视频标题 持续时间等 并将该列表作为我的网络摄像头流播放 这意味着 如果我要访问 ustream tv 或在实时通讯软件上激活我的网络摄像头 我的视频播放列表将注册为我的活动网
  • 网络参考共享类

    我用 Java 编写了一些 SOAP Web 服务 在 JBoss 5 1 上运行 其中两个共享一个类 AddressTO Web 服务在我的 ApplycationServer 上正确部署 一切都很顺利 直到我尝试在我的 C 客户端中使用
  • 可空属性与可空局部变量

    我对以下行为感到困惑Nullable types class TestClass public int value 0 TestClass test new TestClass Now Nullable GetUnderlyingType
  • 将应用程序从 Microsoft Access 迁移到 VB 或 C#.NET

    我目前正试图说服管理层需要将我们的应用程序之一移植到 NET 该应用程序已经发展成为 Access 中的一个庞然大物 SQL 后端 拥有 700 个链接表 650 个表单 子表单 130 个模块和 850 个查询 我几乎知道这样做的所有主要
  • c++/cli 终结器中免费 GCHandle 的最佳实践

    我在 c 中有一些函数 我会在 net 应用程序中使用它 为此 我用 C cli 编写了一个包装器类 C 接口中有一个回调函数 并将其包装在 net 委托中 但是我应该如何释放回调 gcHandle 的非托管资源呢 是否允许在终结器中从 G
  • Bing 地图运行时错误 Windows 8.1

    当我运行带有 Bing Map 集成的 Windows 8 1 应用程序时 出现以下错误 Windows UI Xaml Markup XamlParseException 类型的异常 发生在 DistanceApp exe 中 但未在用户

随机推荐

  • 循环创建PyQt5按钮:所有按钮触发相同的回调

    我应该提到 我已经阅读了这些内容 但我仍然无法实现我的目标 在 for 循环中使用字典来创建按钮不起作用 循环中的 QtCore QObject connect 仅影响最后一个实例 我的目标是制作一个 Linux 启动器 应用程序 按钮的创
  • session_start() 错误

    我无法处理这个错误 请帮助我 它可以在我的笔记本电脑上运行 但不能在我的台式机上运行 Why Warning session start function session start Cannot send session cache li
  • 如何让代码在Response.end之后执行

    我的代码是这样的 HttpContext Current Response Clear HttpContext Current Response ContentType application pdf HttpContext Current
  • 使用 LocationClient 获取位置更新

    我该如何使用locationclient类与requestLocationUpdates LocationRequest LocationListener 在android中获取位置更新 我已经尝试过以下代码 但它不起作用 谁能帮我这个 哪
  • 在Sql Server中编写TRANSFORM语句

    我正在将 Web 应用程序后端从 Access 迁移到 MSSQL 但是我无法在 MSSQL 中重现以下查询 有什么想法吗 TRANSFORM First FollowUp FUData AS FirstOfFUData SELECT Fo
  • 使用 WCF 服务返回 List

    我得到了一个Employee班级和每个员工都有一份请假清单 可以给个清单吗AppliedLeave as a DataMember in WCF DataContract public class Employee DataMember p
  • Typescript:无法在模块外部使用 import 语句

    我在 Node js 2019 年 10 月 7 日最新版本的 Node js 应用程序中有一个 ts 文件 可以导入节点模块而无需默认导出 我使用这个结构 import Class from abc 当我运行代码时 出现以下错误 Cann
  • 访问 nullptr 怎么可能有效? [复制]

    这个问题在这里已经有答案了 我有一个简单的课程 class B public int getData return 3 然后 我用 nullptr 初始化指向它的指针 B foo nullptr 然后 尝试使用它会带来惊喜 int t fo
  • 转换列并更新 DataFrame

    所以 我下面要做的是删除一列A from a DataFrame因为我想应用一个转换 这里我只是json loadsJSON 字符串 并将旧列替换为转换后的列 转换后 我只需连接两个结果数据框 df df data drop A join
  • 如何比较“看起来相似”的 Unicode 字符?

    我陷入了一个令人惊讶的问题 我在应用程序中加载了一个文本文件 并且有一些逻辑来比较 的值 我意识到即使文本相同 比较值也是错误的 Console WriteLine Equals returns false Console WriteLin
  • OpenCV StereoRectify 扭曲图像

    我们有一个 ELP 1 0 百万像素双镜头 USB 立体相机 我们正在尝试使用 C 中的 OpenCV 3 1 来校准它 然而 校准的结果完全无法使用 因为调用stereoRectify完全扭曲了图像 这就是我们所做的 在两个相机中找到校准
  • 使用 Java/Socket 的简单 Http 服务器?

    我目前正在创建一个返回静态页面的小型 HTTP 服务器 p Hello p 我尝试使用 Java 的套接字 public static void main String args throws Exception cr ation de l
  • 使用 SuiteTalk 获取采购订单中的项目

    我正在尝试使用 SuiteTalk 从采购订单中获取商品和一些相关信息 我能够获得所需的采购订单TransactionSearch在 Scala 中使用以下内容 val transactionSearch new TransactionSe
  • python 字符串模块与 str 方法

    gt gt gt import string gt gt gt s happy cat gt gt gt string find s cat 6 and gt gt gt s happy cat gt gt gt s find cat 6
  • Netbeans 11.2:没有为项目或全局定义合适的部署服务器

    我在 Mac 上安装了 Netbeans 11 2 IDE 在 服务 gt 服务器 下 我添加了 GlassFish Server 作为服务器 然后我打开了一个maven项目 我可以 清理和建造 它 然后我想运行它 但这导致了以下错误消息
  • 如何将图像插入到闪亮的 navbarPage() 上的导航栏中

    我正在使用一个闪亮的应用程序navbarPage 布局 我想在屏幕右侧的导航栏中插入图像 例如 它看起来像 stackoverflow 网站顶部的导航栏 但在最右侧有一个徽标 我努力了 shinyUI navbarPage title te
  • 传递多个模型查看

    public ActionResult Index var pr db products return View pr 首先 我想传递给视图更多数据 例如 public ActionResult Index var pr db produc
  • 今天是一年中的第 n 天 [重复]

    这个问题在这里已经有答案了 我想获得天数 即 1 月 1 日是第 1 天 1 月 2 日是第 2 天 2 月 1 日是第 32 天 12 月 31 日是第 365 或 366 天 具体取决于是否闰年 我使用了各种技术 例如 date1 da
  • 如何取消设置和最右边的设置位

    有一个相对知名的技巧可以取消设置最右边的一个位 y x x 1 0b001011100 0b001011011 0b001011000 我发现自己有一个紧密的循环来清除最右边的 n 位 但是有更简单的代数技巧吗 假设 n 相对较大 对于 6
  • control.BeginInvoke() 无法调用委托

    我注意到 control BeginInvoke delegate 有时无法调用委托 据我了解 BeginInvoke 只是创建一条 PostMessage 该消息稍后由应用程序处理 默认情况下发布消息限制为 10 000 鉴于我们的应用程