ASP.NET 定时器回调方法的重入
发布时间 - 2026-01-10 23:09:52 点击率:次话不多说,请看代码:
using System;
using System.Collections.Generic;
using System.Text;
namespace NET.MST.Sixth.Reenter
{
class Reenter
{
//用来造成线程同步问题的静态成员
private static int TestInt1=0;
private static int TestInt2 = 0;
private static object locko = new object();
static void Main(string[] args)
{
Console.WriteLine("System.Timers.Timer 回调方法重入测试:");
TimersTimerReenter();
//这里确保已经开始的回调方法有机会结束
System.Threading.Thread.Sleep(2 * 1000);
Console.WriteLine("System.Threading.Timer 回调方法重入测试:");
ThreadingTimerReenter();
Console.Read();
}
/// <summary>
/// 展示System.Timers.Timer的回调方法重入
/// </summary>
static void TimersTimerReenter()
{
System.Timers.Timer timer = new System.Timers.Timer();
timer.Interval = 100; //100毫秒
timer.Elapsed += TimersTimerHandler;
timer.Start();
System.Threading.Thread.Sleep(2 * 1000); //运行2秒
timer.Stop();
}
/// <summary>
/// 展示System.Threading.Timer的回调方法重入
/// </summary>
static void ThreadingTimerReenter()
{
//100毫秒
using (System.Threading.Timer timer = new System.Threading.Timer
(new System.Threading.TimerCallback(ThreadingTimerHandler), null, 0, 100))
{
System.Threading.Thread.Sleep(2 * 1000); //运行2秒
}
}
/// <summary>
/// System.Timers.Timer的回调方法
/// </summary>
/// <param name="sender"></param>
/// <param name="args"></param>
private static void TimersTimerHandler(object sender,EventArgs args)
{
lock (locko)
{
Console.WriteLine("测试整数:" + TestInt1.ToString());
//睡眠10秒,保证方法重入
System.Threading.Thread.Sleep(300);
TestInt1++;
Console.WriteLine("自增1后测试整数:" + TestInt1.ToString());
}
}
/// <summary>
/// System.Threading.Timer的回调方法
/// </summary>
/// <param name="state"></param>
private static void ThreadingTimerHandler(object state)
{
lock (locko)
{
Console.WriteLine("测试整数:" + TestInt2.ToString());
//睡眠10秒,保证方法重入
System.Threading.Thread.Sleep(300);
TestInt2++;
Console.WriteLine("自增1后测试整数:" + TestInt2.ToString());
}
}
}
}
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,同时也希望多多支持!
# asp.net
# 定时器
# 定时器回调
# .NET中实现高精度定时器的思路
# .NET中6种定时器的用法与特点详解
# .NET Framework中定时器timer的单线程与多线程使用讲解
# asp.net中Timer无刷新定时器的实现方法
# .NET中的6种定时器的基本用法和特点
# 回调
# 有机会
# 已经开始
# 多说
# object
# locko
# private
# static
# int
# Console
# WriteLine
# Timers
# args
# void
# Main
# string
# csharp
# System
# Collections
# brush
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
Laravel Artisan命令怎么自定义_创建自己的Laravel命令行工具完全指南
百度输入法ai面板怎么关 百度输入法ai面板隐藏技巧
详解一款开源免费的.NET文档操作组件DocX(.NET组件介绍之一)
,网页ppt怎么弄成自己的ppt?
Laravel如何使用Gate和Policy进行授权?(权限控制)
Laravel事件监听器怎么写_Laravel Event和Listener使用教程
企业网站制作这些问题要关注
如何在VPS电脑上快速搭建网站?
Win11搜索不到蓝牙耳机怎么办 Win11蓝牙驱动更新修复【详解】
Laravel策略(Policy)如何控制权限_Laravel Gates与Policies实现用户授权
Laravel如何实现多表关联模型定义_Laravel多对多关系及中间表数据存取【方法】
Laravel如何部署到服务器_线上部署Laravel项目的完整流程与步骤
北京的网站制作公司有哪些,哪个视频网站最好?
Laravel如何与Docker(Sail)协同开发?(环境搭建教程)
Laravel项目怎么部署到Linux_Laravel Nginx配置详解
Laravel如何处理JSON字段_Eloquent原生JSON字段类型操作教程
HTML 中如何正确使用模板变量为元素的 name 属性赋值
Laravel模型关联查询教程_Laravel Eloquent一对多关联写法
Laravel如何使用Collections进行数据处理?(实用方法示例)
教学论文网站制作软件有哪些,写论文用什么软件
?
php做exe能调用系统命令吗_执行cmd指令实现方式【详解】
佐糖AI抠图怎样调整抠图精度_佐糖AI精度调整与放大细化操作【攻略】
如何用美橙互联一键搭建多站合一网站?
如何快速上传建站程序避免常见错误?
如何快速选择适合个人网站的云服务器配置?
网站制作怎么样才能赚钱,用自己的电脑做服务器架设网站有什么利弊,能赚钱吗?
宙斯浏览器怎么屏蔽图片浏览 节省手机流量使用设置方法
手机软键盘弹出时影响布局的解决方法
Android中AutoCompleteTextView自动提示
如何快速搭建个人网站并优化SEO?
昵图网官网入口 昵图网素材平台官方入口
如何用手机制作网站和网页,手机移动端的网站能制作成中英双语的吗?
手机网站制作与建设方案,手机网站如何建设?
php打包exe后无法访问网络共享_共享权限设置方法【教程】
ChatGPT 4.0官网入口地址 ChatGPT在线体验官网
Laravel如何实现邮箱地址验证功能_Laravel邮件验证流程与配置
Laravel项目结构怎么组织_大型Laravel应用的最佳目录结构实践
如何在万网自助建站中设置域名及备案?
香港服务器网站生成指南:免费资源整合与高速稳定配置方案
Laravel distinct去重查询_Laravel Eloquent去重方法
简单实现Android验证码
网页设计与网站制作内容,怎样注册网站?
Win11关机界面怎么改_Win11自定义关机画面设置【工具】
Laravel如何发送系统通知_Laravel Notifications实现多渠道消息通知
Laravel怎么实现验证码功能_Laravel集成验证码库防止机器人注册
HTML透明颜色代码在Angular里怎么设置_Angular透明颜色使用指南【详解】
IOS倒计时设置UIButton标题title的抖动问题
Laravel如何升级到最新版本?(升级指南和步骤)
高防服务器租用如何选择配置与防御等级?
动图在线制作网站有哪些,滑动动图图集怎么做?

