private void timer1_Tick(object sender, EventArgs e)
{
int i=0;//第1句
i++;//第2句
i--;//第3句
}
然后再此事件的执行过程中,比如执行到了第2句,我去点击了一个按钮,此时程序会去执行按钮的click事件(对吧?我试的是这样的),在该click事件处理完后,程序又会返回执行timer1_Tick事件中的第2句,第3句一直到执行完timer1_Tick事件。(即使在按钮的Click事件中将tiemr1的Enabled设为false也会返回执行timer1_Tick事件中的剩余语句)。
请问能不能在中间跳出timer1_Tick事件后不再返回来执行剩下的语句?
15 个解决方案
#1
bool isreturn = false;
private void timer1_Tick(object sender, EventArgs e)
{
int i=0;//第1句
if(isreturn) return;
i++;//第2句
i--;//第3句
}
Button_Click(..)
{
isreturn = true;
}
private void timer1_Tick(object sender, EventArgs e)
{
int i=0;//第1句
if(isreturn) return;
i++;//第2句
i--;//第3句
}
Button_Click(..)
{
isreturn = true;
}
#2
那岂不是timer1_Tick事件中的每一条语句前面都要加判断?
#3
有问题吗?本身就是这样的顺序
#4
能不能在timer1_Tick事件被打断去执行其他语句时不再返回执行timer1_Tick事件中剩余的语句?
#5
楼主的意思是说一旦执行了你所谓的新的button的事件后,现有timer事件就不再执行,也就是timer控件不再起任何作用了,对不?
如果是这样的话,一楼就完全能满足你的要求的呀。不存在说是每一条语句都要加。
if(isreturn) return;这句话放到timer1_Tick方法中的第一行,不就OK了吗。你再好好理理思路吧,估计是你没理解咱们的意思。
#6
不好意思,之前没太看清楚你的意思,不过现在看清楚了,原来你是希望点button之前,timer就已经开始执行timer1_Tick内的事件。
然后点了button后不再执行其它还未执行的事件。
而且我看你的意思,好像是:点button按钮时,timer_Tick中调用的事件的个数还不是固定的。这样的话,只能在每个调用事件前一个个加之前的那句话了。
1.使用timer.Enabled属性用于设置是否启用定时器。
2.timer1.Stop();方法是用于停止计时。
但是以上两种方式都只是让你的timer控件不再起到作用而已。但是对于已经进入到timer1_tick中的事件是不会终止的。因为你没法控制到底程序要执行哪个事件时终止里面的方法呀。除非timer1_tick中的调用的方法就已经有结束timer作用的逻辑(具体还会不会继续下面的其它方法我没试。你自己试试)。
然后点了button后不再执行其它还未执行的事件。
而且我看你的意思,好像是:点button按钮时,timer_Tick中调用的事件的个数还不是固定的。这样的话,只能在每个调用事件前一个个加之前的那句话了。
1.使用timer.Enabled属性用于设置是否启用定时器。
2.timer1.Stop();方法是用于停止计时。
但是以上两种方式都只是让你的timer控件不再起到作用而已。但是对于已经进入到timer1_tick中的事件是不会终止的。因为你没法控制到底程序要执行哪个事件时终止里面的方法呀。除非timer1_tick中的调用的方法就已经有结束timer作用的逻辑(具体还会不会继续下面的其它方法我没试。你自己试试)。
#7
路过,学习学习。
#8
这样 即使当前的 timer 事件 没有处理完
时间到了 也会触发下一个 timer事件
你想在timer事件里面 提前返回
就用return
时间到了 也会触发下一个 timer事件
你想在timer事件里面 提前返回
就用return
#9
或者不用Timer,改用线程自己控制线程经度。
#10
线程好,timer是基于消息的
#11
还有其他的方法没?难道必须要用线程才能实现吗?
饿还不会用线程那
#12
如果是简单应用的话,线程真的不难,msdn上看看就好了,几小时就ok了
#13
那就用return
#14
timer1.Stop();可以终止时钟,但当前的timer1_Tick事件无法停止
#15
还是没实现,只好return了
#1
bool isreturn = false;
private void timer1_Tick(object sender, EventArgs e)
{
int i=0;//第1句
if(isreturn) return;
i++;//第2句
i--;//第3句
}
Button_Click(..)
{
isreturn = true;
}
private void timer1_Tick(object sender, EventArgs e)
{
int i=0;//第1句
if(isreturn) return;
i++;//第2句
i--;//第3句
}
Button_Click(..)
{
isreturn = true;
}
#2
那岂不是timer1_Tick事件中的每一条语句前面都要加判断?
#3
有问题吗?本身就是这样的顺序
#4
能不能在timer1_Tick事件被打断去执行其他语句时不再返回执行timer1_Tick事件中剩余的语句?
#5
楼主的意思是说一旦执行了你所谓的新的button的事件后,现有timer事件就不再执行,也就是timer控件不再起任何作用了,对不?
如果是这样的话,一楼就完全能满足你的要求的呀。不存在说是每一条语句都要加。
if(isreturn) return;这句话放到timer1_Tick方法中的第一行,不就OK了吗。你再好好理理思路吧,估计是你没理解咱们的意思。
#6
不好意思,之前没太看清楚你的意思,不过现在看清楚了,原来你是希望点button之前,timer就已经开始执行timer1_Tick内的事件。
然后点了button后不再执行其它还未执行的事件。
而且我看你的意思,好像是:点button按钮时,timer_Tick中调用的事件的个数还不是固定的。这样的话,只能在每个调用事件前一个个加之前的那句话了。
1.使用timer.Enabled属性用于设置是否启用定时器。
2.timer1.Stop();方法是用于停止计时。
但是以上两种方式都只是让你的timer控件不再起到作用而已。但是对于已经进入到timer1_tick中的事件是不会终止的。因为你没法控制到底程序要执行哪个事件时终止里面的方法呀。除非timer1_tick中的调用的方法就已经有结束timer作用的逻辑(具体还会不会继续下面的其它方法我没试。你自己试试)。
然后点了button后不再执行其它还未执行的事件。
而且我看你的意思,好像是:点button按钮时,timer_Tick中调用的事件的个数还不是固定的。这样的话,只能在每个调用事件前一个个加之前的那句话了。
1.使用timer.Enabled属性用于设置是否启用定时器。
2.timer1.Stop();方法是用于停止计时。
但是以上两种方式都只是让你的timer控件不再起到作用而已。但是对于已经进入到timer1_tick中的事件是不会终止的。因为你没法控制到底程序要执行哪个事件时终止里面的方法呀。除非timer1_tick中的调用的方法就已经有结束timer作用的逻辑(具体还会不会继续下面的其它方法我没试。你自己试试)。
#7
路过,学习学习。
#8
这样 即使当前的 timer 事件 没有处理完
时间到了 也会触发下一个 timer事件
你想在timer事件里面 提前返回
就用return
时间到了 也会触发下一个 timer事件
你想在timer事件里面 提前返回
就用return
#9
或者不用Timer,改用线程自己控制线程经度。
#10
线程好,timer是基于消息的
#11
还有其他的方法没?难道必须要用线程才能实现吗?
饿还不会用线程那
#12
如果是简单应用的话,线程真的不难,msdn上看看就好了,几小时就ok了
#13
那就用return
#14
timer1.Stop();可以终止时钟,但当前的timer1_Tick事件无法停止
#15
还是没实现,只好return了