百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 编程网 > 正文

如何使用.NET中的委托 对.net委托的理解

yuyutoo 2024-10-12 01:34 5 浏览 0 评论

我们通过循序渐进修改一个计时器的例子,来引出我们的委托

首先,运用我们之前学的知识,制作一个计时器,最简单有效的方法就是在窗体中添加一个timer控件,

如下图:

工具面板中的Timer控件

Timer 控件作为一个后台控件,通过引发 Timer 事件,Timer 控件可以有规律地隔一段时间执行一次代码,

Timer 控件用于背景进程中,它是不可见的。

对于 Timer 控件以外的其它控件的多重选择,不能设置 Timer 的 Enabled 属性。

在运行于 Windows 95 或 Windows NT 下的 Visual Basic 5.0 中可以有多个活动的定时器控件,对此,实际上并没有什么限制。

补充:Timer控件通俗来说就是计时器,这是一个不可视控件.它的重要属性有Interval,Enabled.

它的Tick事件指的是每经过Interval属性指定的时间间隔时发生一次.

Timer控件的这些属性和事件我们要注意一下

属性:

  • Interval : 代表事件的频率,以毫秒为单位

  • Enabled : 启用timer控件

事件

  • Tick : 每当经过指定的时间间隔时发生

所以,我们在这里给timer控件的interval属性设置1000(因为1000毫秒=1秒),完成后的窗体应该和我一样,见下图:

名为timer1的Timer控件

具体代码如下:

timer控件版计时器代码

效果如下:


好了,现在如果我们脱离timer控件.,该怎么去完成这样一个计时器, 不少朋友已经想到了,使用for循环,接下去我们把代码改一下.删掉timer控件,改完的代码如下:

使用for循环的计时器

眼尖的同学们肯定可以看到,这里的for循环会运行的非常快,从而导致一运行我们的主程序label的值将直接会变成60 ,所以我再将代码进行修改,在每次运行结束一次for循环的时候加一个线程休眠 ,修改完的代码如下:

加入了线程休眠的for循环计时器

我们运行看一下效果:

我们可以看到,当label变为1之后 , 窗体就未响应了,这是为什么,相信已经有同学想到了问题的原因, 这里的主线程也就是我们的主窗体,直到每次休眠结束才会继续进行,所以这里我们需要使用到另一个线程 , 同时加入委托.我们再次将代码进行修改

委托多线程计时器

这里我们可以看到我们又新建了个线程th作为后台线程去调用for循环,然后又用过invoke委托timechange方法,完美的完成了我们今天的需求,一起来看一下效果:

委托多线程计时器

效果已经很完美了, 这里需要注意的是 , 我把线程th的isBcakGround属性设置为了true,这个意思就是设置为后台线程 , 那有什么作用呢 , 如果不加这句话 , 我把程序运行起来再关闭 , 主线程结束了, 但线程th还在运行 , 并且会给label控件赋值 , 这样就会产生跨线程的问题, 所以这里必须把他的isbackground属性设置为true .

好今天的分享就到这里啦,有兴趣的兄弟姐妹们可以加

加入此群一起high!!!!!!

相关推荐

网站建设:从新手到高手

现代化网站应用领域非常广泛,从个人形象网站展示、企业商业网站运作、到政府公益等服务网站,各行各业都需要网站建设。大体上可以归结四类:宣传型网站设计、产品型网站制作、电子商务型网站建设、定制型功能网站开...

JetBrains 推出全新 AI 编程工具 Junie,助力高效开发

JetBrains宣布推出名为Junie的全新AI编程工具。这款工具不仅能执行简单的代码生成与检查任务,还能应对编写测试、验证结果等复杂项目,为开发者提供全方位支持。根据SWEBench...

AI也能写代码!代码生成、代码补全、注释生成、代码翻译轻松搞定

清华GLM技术团队打造的多语言代码生成模型CodeGeeX近期更新了新的开源版本「CodeGeeX2-6B」。CodeGeeX2是多语言代码生成模型CodeGeeX的第二代模型,不同于一代CodeG...

一键生成前后端代码,一个36k星的企业级低代码平台

「企业级低代码平台」前后端分离架构SpringBoot2.x,SpringCloud,AntDesign&Vue,Mybatis,Shiro,JWT。强大的代码生成器让前后端代码一键生成,无需写任...

Gitee 代码托管实战指南:5 步完成本地项目云端同步(附避坑要点)

核心流程拆解:远程仓库的搭建登录Gitee官网(注册账号比较简单,大家自行操作),点击“新建仓库”,建议勾选“初始化仓库”和“设置模板文件”(如.gitignore),避免上传临时文件。...

jeecg-boot 源码项目-强烈推荐使用

JEECGBOOT低代码开发平台...

JetBrains推出全新AI编程工具Junie,强调以开发者为中心

IT之家2月1日消息,JetBrains发文,宣布推出一款名为Junie的全新AI编程工具,官方声称这款AI工具既能执行简单的代码生成与检查等基础任务,也能应对“编写测试、验证结...

JetBrains旗下WebStorm和Rider现已加入“非商用免费”阵营

IT之家10月25日消息,软件开发商JetBrains今日宣布,旗下WebStorm(JavaScript开发工具)和Rider(.NET开发工具)现已加入“非商用免费”阵营。如果...

谈谈websocket跨域

了解websocketwebsocket是HTML5的新特性,在客户端和服务端提供了一个基于TCP连接的双向通道。...

websocket调试工具

...

利用webSocket实现消息的实时推送

1.什么是webSocketwebSocket实现实现推送消息WebSocket是HTML5开始提供的一种在单个TCP连接上进行全双工通讯的协议。以前的推送技术使用Ajax轮询,浏览器需...

Flutter UI自动化测试技术方案选型与探索

...

为 Go 开发的 WebSocket 库

#记录我的2024#...

「Java基础」Springboot+Websocket的实现后端数据实时推送

这篇文章主要就是实现这个功能,只演示一个基本的案例。使用的是websocket技术。...

【Spring Boot】WebSocket 的 6 种集成方式

介绍...

取消回复欢迎 发表评论: