|
RT。
之前一直没有注意过。
简化问题后:具体是这样:
一个定时器:周期100ms进入。如果这100ms定时器里面的任务没有处理完。发现:它好像会再调用一次副本,重新开始执行!于是不断的循环执行!这个完全违背我设计的想法。
请教:这是什么原理?应该如何解决(现在我的方法是:进入定时器后关闭定时器,处理完任务后再启用定时器!)
但是重点:我想知道其中的机制是什么,为什么是这样操作。(我做单片机比较多,一般如果单片机定时器一个中断没有处理完,程序还是留在中断函数中循环操作。)
于是我重新写了个展示程序:定时器里面用:MessageBox.Show()来阻断定时器完成。
代码如下:
- int i = 0;
- private void timer1_Tick(object sender, EventArgs e)
- {
- if (i == 0)
- {
- DialogResult dr = MessageBox.Show("好多弹窗,是否强制退出?", "", MessageBoxButtons.OKCancel, MessageBoxIcon.Hand);
- if (dr == DialogResult.OK)
- {
- this.Dispose();
- this.Close();
- }
- i++;
- }
- }
- private void button1_Click(object sender, EventArgs e)
- {
- timer1.Enabled = true;
- }
复制代码
实测效果:
代码附件:
|
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有帐号?注册
x
|