This.invoke和this.begininvoke的区别?

article/2025/9/30 8:19:23

应用场景

在多线程编程中,我们经常要在工作线程中去更新界面显示,而在多线程中直接调用界面控件的方法是错误的做法,Invoke和BeginInvoke就是为了解决这个问题。

个人总结

①This.begininvoke和this.invoke注册委托调用的方法都是等UI主线程执行到“windows消息泵”的时候才被调用,不是立即执行委托的,都是在UI线程中执行

②通常可以把耗时的操作放到子线程里执行,然后再调用BeginInvoke/Invoke方法

③Control的BeginInvoke是相对于工作线程(工作线程是调用BeginInvoke方法的线程)是异步的。
工作线程不管是UI线程还是子线程,Invoke需要阻塞工作线程执行,而BeginInvoke不需要阻塞工作线程执行。

测试

UI线程:

    private void button76_Click(object sender, EventArgs e){Console.WriteLine("1");this.Invoke(new Action(() =>{Thread.Sleep(1000);Console.WriteLine("2");}));Console.WriteLine("3");}private void button85_Click(object sender, EventArgs e){Console.WriteLine("4");this.BeginInvoke(new Action(() =>{Thread.Sleep(1000);Console.WriteLine("5");}));Console.WriteLine("6");}
}

输出结果如下:
在这里插入图片描述

子线程:

private void button76_Click(object sender, EventArgs e){Thread t  = new Thread(()=>{Console.WriteLine("1");this.Invoke(new Action(() =>{Thread.Sleep(10000);Console.WriteLine("2");}));Console.WriteLine("3");});t.Start();}private void button85_Click(object sender, EventArgs e){Thread t = new Thread(() =>{Console.WriteLine("4");this.BeginInvoke(new Action(() =>{Thread.Sleep(10000);Console.WriteLine("5");}));Console.WriteLine("6");});t.Start();}
}

在这里插入图片描述


http://chatgpt.dhexx.cn/article/mC1rZEK4.shtml

相关文章

C#——invoke和begininvoke 区别

invoke和begininvoke 区别 一直对invoke和begininvoke的使用和概念比较混乱,这两天看了些资料,对这两个的用法和原理有了些新的认识和理解。 首先说下,invoke和begininvoke的使用有两种情况: 1. control中的invoke、begininvoke。…

C#Invoke和BeginInvoke应用详解

最近,在研究Invoke的使用,但是真的是一头雾水,网上看了很多资料,感觉还是看不懂,因为对于入门级的小白,想像不出Invoke的应用场景,更谈不上如何用了? 1、Invoke到底是什么&#xff…

Java工作流框架:探索流程引擎的实现和应用

目前,市面上有很多基于SpringBootVue前后端分离的Java快速开发框架和工作流开发框架可供选择。以下是一些比较流行的框架: 1. Spring Cloud:Spring Cloud是一套基于Spring Boot的开发工具,用于快速构建分布式系统中的服务。它利用…

Java工作流框架和应用场景

一:Java工作流框架是一种用于设计、执行和管理工作流程的技术。以下是几个常见的Java工作流框架: Activiti:Activiti是一款流行的开源Java工作流引擎,它基于BPMN 2.0标准,支持复杂的工作流程设计和管理。Activiti具有高…

工作流使用

#🌻 工作流使用 无需开发代码,即可快速创建工作流、表单,并完成审批、监控等操作。 #功能脑图 #特点 基于 Flowable(Activiti)生来具有的稳定工作流引擎。使用flowable官方流程设计器,功能强大&#xff…

工作流 开源(java工作流框架jbpm)

工作流(工作流) :“在部分或整个业务流程的计算机应用环境中实现自动化” l简单来说,就是用程序管理工作流程,以表格审核和任务处理为主体,实现办公室自动化 工作流帮助器管理业务流程,业务操作保持不变。 工作流是通知流程&…

java工作流开源框架可以提高工作效率吗?

要想回答这个问题,就需要了解什么是java工作流开源框架,以及java工作流开源框架的主要特点是什么。随着大数据时代的拓展发展,低代码开发平台已经在数字化管理时代中深受欢迎,是做好数据管理和提升企业数字化发展步伐的重要工具。…

Java开源 开源工作流

Willow 点击次数:18942 由Huihoo Power开发详细可到其中文主页查看。 OpenWFE 点击次数:17672 OpenWFE是一个开放源码的Java工作流引擎。它是一个完整的业务处理管理套件:一个引擎,一个工作列表,一个Web界面和一个…

Java实现自定义工作流

这篇文章实现java自定义工作流程,对工作流不太熟悉的可以先看下工作流相关文章: 工作流 相关表结构、实体创建 流程主表:tbl_workflow_requestbase(这里以项目工地工作流为例) CREATE TABLE tbl_workflow_requestba…

JAVA工作流的优雅实现方式

今天查找线上问题,看到一个让我脑洞大开的工作流实现方式。以前用过责任链模式,也用过模板模式实现类工作流的方式,但是对比这个工具,逊色不少,不卖关子了,就是Apache Commons Chain,它是Comman…

Java开源工作流引擎

http://www.open-open.com/08.htm Willow 由Huihoo Power开发详细可到其中文主页查看。 更多Willow信息 OpenWFE OpenWFE是一个开放源码的Java工作流引擎。它是一个完整的业务处理管理套件:一个引擎,一个工作列表,一个Web界面和一个反应器&…

Java工作流管理系统(activity6.0)

activity6.0工作流系统知识点文章 第一章 activity流程部署(自动部署与动态BPMN部署) 第二章 activity变量使用 第三章 activity权限控制(代办任务查询) 第四章 activity审核任务(签领、完成任务、跳过节点、新增节点…

JAVA实现一个工作流引擎

介绍 工作流是一种将一系列相关的任务和活动组织起来的技术,以便在企业或组织中自动化或半自动化地管理业务流程。工作流技术可以帮助企业或组织更好地管理和优化业务流程,提高生产效率和质量,降低成本和风险。 JAVA作为一种面向对象编程语…

Java 3个常用工作流引擎

一:Java工作流框架是一种用于设计、执行和管理工作流程的技术。以下是几个常见的Java工作流框架: Activiti:Activiti是一款流行的开源Java工作流引擎,它基于BPMN 2.0标准,支持复杂的工作流程设计和管理。Activiti具有高…

Java 流行的工作流引擎

Java 流行的工作流引擎 JBPM 工作流 JBPM 是一个Java业务流程管理系统,是JBoss中一款开源的工作流引擎,是一个轻量级的,使用BPMN 2规范可扩展的 工作流引擎,也是一个工作流管理系统,它可以运行在任何java环境&#x…

Java工作流有哪些?如何快速掌握Java技术

工作流是什么?工作流是指两个或两个以上的人,为了共同的目标,连续的以串行或并行的方式去完成某一业务。Java工作流就是一个基于Java开发的流程框架,是每一个参加郑州Java软件开发培训的学员需要掌握的入门知识。那么常见的Java工作流有哪些…

JAVA工作流

一、 什么是工作流 以请假为例,现在大多数公司的请假流程是这样的 员工打电话(或网聊)向上级提出请假申请——上级口头同意——上级将请假记录下来——月底将请假记录上交公司——公司将请假录入电脑 采用工作流技术的公司的请假流程是这样…

java工作流详解

什么是工作流? 工作流:两个或两个以上的人,为了共同的目标,连续的以串行或并行的方式去完成某一业务。 业务:工作流所指业务涵盖了与经营相关的活动。 串行或并行:业务中的步骤也许以一步接着一步的方式…

Java开源工作流框架对比

什么是工作流? 工作流,是指“业务​过程的部分或整体在​计算机应用环境下的自动化”。是对工作流程及其各操作步骤之间业务规则的抽象、概括描述。 在计算机中,工作流属于计算机支持的协同工作(CSCW)的一部分。 工作流…

极简 Java 工作流概念入门

1. 为什么需要工作流 假设我有一个请假需求,流程如下: 请假可以提交给我的上司,上司可以选择批准或者拒绝,无论批准还是拒绝,都会给我一个通知。 这个流程比较简单,我们很容易想到解决方案,不…