问题:第二次点击 事件timer_Elapsed无法停止;
麻烦解释如何停止事件timer_Elapsed,解释下面这样为何无法停止事件timer_Elapsed
附代码:
public partial class _Default : System.Web.UI.Page
{
static int count = 0;
protected void Page_Load(object sender, EventArgs e)
{
}
protected void Button1_Click(object sender, EventArgs e)
{
System.Timers.Timer timer = new System.Timers.Timer();
timer.AutoReset = true;
timer.Enabled = true ;
timer.Elapsed += new ElapsedEventHandler(timer_Elapsed);
timer.Interval = 1000;
count ++;
if (count % 2 == 0)
{
timer.Enabled = false;
}
}
void timer_Elapsed(object sender, ElapsedEventArgs e)
{
this.Label1 .Text += "8899-";
}
}
29 个解决方案
#1
- -
用Enable把。
用Enable把。
#2
将timer设置为全局变量吧 你这样写第一次和第二次点击的timer是两个 可不停不下来
#3
把事件减掉
timer.Elapsed -= new ElapsedEventHandler(timer_Elapsed);
timer.Elapsed -= new ElapsedEventHandler(timer_Elapsed);
#4
没那么简单
http://msdn.microsoft.com/zh-cn/library/system.timers.timer.stop(VS.80).aspx
例子比较复杂
http://msdn.microsoft.com/zh-cn/library/system.timers.timer.stop(VS.80).aspx
例子比较复杂
#5
这也是问题
#6
无效,谢谢
#7
无效,谢谢
#8
期待答案。。。
#9
楼主,你这个是web的程序吗?
如果是web的程序的话,建议楼主看看页面生存周期。
这种通过web传递的话,每次页面都是重新生成的。
因此第一次按钮打开的timer无论是不是设置static都是不可能关闭的。
为什么会有这种需求呢?
如果真的是想用全局变量的话,Application中可以放!
不过不建议这么做
如果是web的程序的话,建议楼主看看页面生存周期。
这种通过web传递的话,每次页面都是重新生成的。
因此第一次按钮打开的timer无论是不是设置static都是不可能关闭的。
为什么会有这种需求呢?
如果真的是想用全局变量的话,Application中可以放!
不过不建议这么做
#10
[Quote=引用 9 楼 ouc_ajax 的回复:]
楼主,你这个是web的程序吗?
如果是web的程序的话,建议楼主看看页面生存周期。
+++++++++++++++++++++++++++++++++++++++++++++
public partial class _Default : System.Web.UI.Page
++++++++++++++++++++++++++++++++++++++++++++++++
这种通过web传递的话,每次页面都是重新生成的。
因此第一次按钮打开的timer无论是不是设置static都是不可能关闭的。
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
timer 未设置static变量,计数器设置static变量有误吗?
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
为什么会有这种需求呢?
+++++++++++++++++++++++++++++++++++++++++++++++++++++++
做一个年终抽奖程序,Button1未按下第二次次前一直随机查询,按下第二次后停止,如此反复
+++++++++++++++++++++++++++++++++++++++++++++++++++++++
如果真的是想用全局变量的话,Application中可以放!
不过不建议这么做
楼主,你这个是web的程序吗?
如果是web的程序的话,建议楼主看看页面生存周期。
+++++++++++++++++++++++++++++++++++++++++++++
public partial class _Default : System.Web.UI.Page
++++++++++++++++++++++++++++++++++++++++++++++++
这种通过web传递的话,每次页面都是重新生成的。
因此第一次按钮打开的timer无论是不是设置static都是不可能关闭的。
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
timer 未设置static变量,计数器设置static变量有误吗?
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
为什么会有这种需求呢?
+++++++++++++++++++++++++++++++++++++++++++++++++++++++
做一个年终抽奖程序,Button1未按下第二次次前一直随机查询,按下第二次后停止,如此反复
+++++++++++++++++++++++++++++++++++++++++++++++++++++++
如果真的是想用全局变量的话,Application中可以放!
不过不建议这么做
#11
这种通过web传递的话,每次页面都是重新生成的。
因此第一次按钮打开的timer无论是不是设置static都是不可能关闭的。
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
timer 未设置static变量,计数器设置static变量有误吗?
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
测试没错误
因此第一次按钮打开的timer无论是不是设置static都是不可能关闭的。
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
timer 未设置static变量,计数器设置static变量有误吗?
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
测试没错误
#12
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Timers;
namespace WindowsFormsApplication1
{
public partial class Form1 : Form
{
System.Timers.Timer timer=new System.Timers.Timer();
int count = 0;
int beginbegin = 1;
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
beginbegin++;
if (beginbegin % 2==0)
{
timer.Elapsed += new ElapsedEventHandler(timer_Elapsed);
timer.Interval = 1000;
timer.Enabled = true;
}
else
{
timer.Enabled = false;
}
}
private void timer_Elapsed(object sender, ElapsedEventArgs e)
{
count++;
label1.Text = count.ToString();
}
}
}
刚写了个测试下好用 你看看哪有些出入吧
#13
timer.Elapsed += new ElapsedEventHandler(timer_Elapsed); 不能放到你的Button Click event method中
#14
timer.Change( Timeout.Infinite, Timeout.Infinite );
这个和停止的效果是一样的
可以试试
这个和停止的效果是一样的
可以试试
#15
看看
#16
看样子还有点复杂啊
#17
private void timer_Elapsed(object sender, ElapsedEventArgs e)
{
Timer t = (Timer)sender;
t.销毁;
count++;
label1.Text = count.ToString();
}
试试这个
{
Timer t = (Timer)sender;
t.销毁;
count++;
label1.Text = count.ToString();
}
试试这个
#18
改过测试了,无法停止事件,区别是我用web,你的win forms,谢谢
#19
我来顶一下
#20
无效,谢谢
#21
Change是System.Threading.Timer的方法,我此处用的是System.Timers.timer,五此方法,谢谢
#22
逻辑错误,无效,谢谢
#23
将timer设成全局的静态变量试试
#24
.
#25
学习中,帮顶。
#26
up
#27
友情帮顶!!!
#28
不可能
#29
学习一下
#1
- -
用Enable把。
用Enable把。
#2
将timer设置为全局变量吧 你这样写第一次和第二次点击的timer是两个 可不停不下来
#3
把事件减掉
timer.Elapsed -= new ElapsedEventHandler(timer_Elapsed);
timer.Elapsed -= new ElapsedEventHandler(timer_Elapsed);
#4
没那么简单
http://msdn.microsoft.com/zh-cn/library/system.timers.timer.stop(VS.80).aspx
例子比较复杂
http://msdn.microsoft.com/zh-cn/library/system.timers.timer.stop(VS.80).aspx
例子比较复杂
#5
这也是问题
#6
无效,谢谢
#7
无效,谢谢
#8
期待答案。。。
#9
楼主,你这个是web的程序吗?
如果是web的程序的话,建议楼主看看页面生存周期。
这种通过web传递的话,每次页面都是重新生成的。
因此第一次按钮打开的timer无论是不是设置static都是不可能关闭的。
为什么会有这种需求呢?
如果真的是想用全局变量的话,Application中可以放!
不过不建议这么做
如果是web的程序的话,建议楼主看看页面生存周期。
这种通过web传递的话,每次页面都是重新生成的。
因此第一次按钮打开的timer无论是不是设置static都是不可能关闭的。
为什么会有这种需求呢?
如果真的是想用全局变量的话,Application中可以放!
不过不建议这么做
#10
[Quote=引用 9 楼 ouc_ajax 的回复:]
楼主,你这个是web的程序吗?
如果是web的程序的话,建议楼主看看页面生存周期。
+++++++++++++++++++++++++++++++++++++++++++++
public partial class _Default : System.Web.UI.Page
++++++++++++++++++++++++++++++++++++++++++++++++
这种通过web传递的话,每次页面都是重新生成的。
因此第一次按钮打开的timer无论是不是设置static都是不可能关闭的。
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
timer 未设置static变量,计数器设置static变量有误吗?
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
为什么会有这种需求呢?
+++++++++++++++++++++++++++++++++++++++++++++++++++++++
做一个年终抽奖程序,Button1未按下第二次次前一直随机查询,按下第二次后停止,如此反复
+++++++++++++++++++++++++++++++++++++++++++++++++++++++
如果真的是想用全局变量的话,Application中可以放!
不过不建议这么做
楼主,你这个是web的程序吗?
如果是web的程序的话,建议楼主看看页面生存周期。
+++++++++++++++++++++++++++++++++++++++++++++
public partial class _Default : System.Web.UI.Page
++++++++++++++++++++++++++++++++++++++++++++++++
这种通过web传递的话,每次页面都是重新生成的。
因此第一次按钮打开的timer无论是不是设置static都是不可能关闭的。
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
timer 未设置static变量,计数器设置static变量有误吗?
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
为什么会有这种需求呢?
+++++++++++++++++++++++++++++++++++++++++++++++++++++++
做一个年终抽奖程序,Button1未按下第二次次前一直随机查询,按下第二次后停止,如此反复
+++++++++++++++++++++++++++++++++++++++++++++++++++++++
如果真的是想用全局变量的话,Application中可以放!
不过不建议这么做
#11
这种通过web传递的话,每次页面都是重新生成的。
因此第一次按钮打开的timer无论是不是设置static都是不可能关闭的。
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
timer 未设置static变量,计数器设置static变量有误吗?
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
测试没错误
因此第一次按钮打开的timer无论是不是设置static都是不可能关闭的。
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
timer 未设置static变量,计数器设置static变量有误吗?
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
测试没错误
#12
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Timers;
namespace WindowsFormsApplication1
{
public partial class Form1 : Form
{
System.Timers.Timer timer=new System.Timers.Timer();
int count = 0;
int beginbegin = 1;
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
beginbegin++;
if (beginbegin % 2==0)
{
timer.Elapsed += new ElapsedEventHandler(timer_Elapsed);
timer.Interval = 1000;
timer.Enabled = true;
}
else
{
timer.Enabled = false;
}
}
private void timer_Elapsed(object sender, ElapsedEventArgs e)
{
count++;
label1.Text = count.ToString();
}
}
}
刚写了个测试下好用 你看看哪有些出入吧
#13
timer.Elapsed += new ElapsedEventHandler(timer_Elapsed); 不能放到你的Button Click event method中
#14
timer.Change( Timeout.Infinite, Timeout.Infinite );
这个和停止的效果是一样的
可以试试
这个和停止的效果是一样的
可以试试
#15
看看
#16
看样子还有点复杂啊
#17
private void timer_Elapsed(object sender, ElapsedEventArgs e)
{
Timer t = (Timer)sender;
t.销毁;
count++;
label1.Text = count.ToString();
}
试试这个
{
Timer t = (Timer)sender;
t.销毁;
count++;
label1.Text = count.ToString();
}
试试这个
#18
改过测试了,无法停止事件,区别是我用web,你的win forms,谢谢
#19
我来顶一下
#20
无效,谢谢
#21
Change是System.Threading.Timer的方法,我此处用的是System.Timers.timer,五此方法,谢谢
#22
逻辑错误,无效,谢谢
#23
将timer设成全局的静态变量试试
#24
.
#25
学习中,帮顶。
#26
up
#27
友情帮顶!!!
#28
不可能
#29
学习一下