当前位置: 首页 > news >正文

c#定时器 防重入锁

private int data1 = 0;
int Step1 = 0; //标志位
int status2 = 0; //标志位
private async void timer1_Tick(object sender, EventArgs e)
{
if (status2 == 1) return; // 忙就不进
status2 = 1; // ✅ 立刻上锁(关键)

try { switch (Step1) { case 0: textBoxStart.Text = "开始"; Step1 = 10; break; case 10: textBoxStart.Text = "步序是10"; Step1 = 20; break; case 20: textBoxStart.Text = "步骤20"; Step1 = 30; // ✅ 先推进步序 await Task.Delay(3000); // ✅ 延时才稳定 break; case 30: textBoxStart.Text = "步骤30"; Step1 = 40; break; case 40: textBoxStart.Text = "步骤40"; timer1.Enabled = false; // ✅ 结束就停(否则会一直刷40) break; } } catch (Exception ex) { timer1.Enabled = false; textBoxStart.Text = "异常:" + ex.Message; Step1 = 0; } finally { status2 = 0; // ✅ 解锁 }

}

//------------备注-------------------
1️⃣ Step 一定要在 await 前推进
2️⃣ 锁只保证“单次 Tick 不重入”,不是保证整个 Delay 期间

http://www.jsqmd.com/news/271927/

相关文章:

  • 微信网页版终极解决方案:wechat-need-web插件完整指南
  • C#工业上通用的顺序控制写法
  • 小红书下载终极指南:XHS-Downloader一键获取无水印高清素材
  • Windows Cleaner实战指南:5步解决C盘空间焦虑
  • Cowabunga Lite:终极iOS定制工具箱完全指南
  • SAM3性能评测:不同深度学习框架对比
  • WarcraftHelper高效优化指南:全面提升魔兽争霸III游戏体验
  • Android视频播放优化:5大关键技术重塑移动观影体验
  • WarcraftHelper超强性能优化:5个关键技巧彻底解决魔兽争霸III兼容性问题
  • BAAI/bge-m3如何集成?Python调用API避坑指南代码实例
  • BERT智能填空系统:文本理解能力测试报告
  • NeteaseCloudMusicFlac无损音乐下载工具:打造专属高品质音乐库
  • 微信网页版完全教程:浏览器端微信的终极解决方案
  • Zotero文献管理革命:用Ethereal Style打造智能阅读工作流
  • 无源蜂鸣器驱动电路在多节点报警网络中的部署实践
  • 告别复杂配置!SAM3镜像版实现开箱即用的图像分割体验
  • 如何快速掌握Balena Etcher:终极镜像烧录全攻略
  • Windows Cleaner高效清理指南:三步解决C盘爆满问题
  • 小红书素材收集革命:告别手动保存的智能下载方案
  • IndexTTS-2-LLM性能瓶颈分析:CPU利用率优化实战案例
  • IndexTTS-2-LLM优化案例:如何提升长文本合成质量
  • 免越狱iOS定制神器:从新手到高手的完整指南
  • Fiji图像处理:生命科学研究的终极工具指南
  • BGE-M3应用场景:智能客服中的问题相似度匹配
  • Hanime1观影神器完整教程:轻松打造极致Android观影环境
  • AI智能二维码工坊倾斜校正:旋转图像自动对齐实战
  • MTKClient完整使用指南:新手必看的3大关键技巧
  • 安卓位置模拟终极方案:如何实现精准独立定位?
  • Windows Cleaner终极解决方案:轻松告别C盘空间焦虑
  • iOS系统个性化革命:Cowabunga Lite深度体验与创新玩法