Reputation: 154
Here is my Code for calling an event after 1 minute, I have two button one for start and calling elapsed event after every 1 minute and second button for stopping this timer elapsed event to fire.
start Button evnt code is
protected void Button1_Click(object sender, EventArgs e)
{
System.Timers.Timer _timer;
_timer = new System.Timers.Timer(10000);
_timer.Elapsed += new ElapsedEventHandler(_timer_Elapsed);
_timer.Enabled = true;
}
Timer Elapsed event
static void _timer_Elapsed(object sender, ElapsedEventArgs e)
{
//It works fine it fires after every minute
}
Stop button event code
protected void Button2_Click(object sender, EventArgs e)
{
//What to do here??
}
I want to stop this timer activity to stop on this button click evnent. what should be code here??
My entire code is
public partial class TimerScheduler : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
}
static void _timer_Elapsed(object sender, ElapsedEventArgs e)
{
}
System.Timers.Timer _timer = new System.Timers.Timer(10000);
//_timer = ;
protected void Button1_Click(object sender, EventArgs e)
{
_timer.Elapsed += new ElapsedEventHandler(_timer_Elapsed);
_timer.Enabled = true;
}
protected void Button2_Click(object sender, EventArgs e)
{
_timer.Stop();
_timer.Enabled = false;
}
}
Upvotes: 0
Views: 2801
Reputation: 26199
Solution 1: you can Call Stop()
method of the Timer
.
_timer.Stop();
Solution 2: you can Set Enabled
property of the Timer
to false
.
_timer.Enabled=false;
Note: I would suggest calling Stop()
method.
Solution 3:
you are getting Object reference not set to an instance of an object
exception because you have not initialised your timer by clicking on button1
. so you should not click on button2
untill unless you click on button1
as button1
click event handler contains initialisation code to make your present code to work.
OR
I would suggest you to move the timer
initialisation statement to outside the Button1
click event handler.
Try This :
System.Timers.Timer _timer;
_timer = new System.Timers.Timer(10000);
protected void Button1_Click(object sender, EventArgs e)
{
_timer.Elapsed += new ElapsedEventHandler(_timer_Elapsed);
_timer.Enabled = true;
}
protected void Button2_Click(object sender, EventArgs e)
{
_timer.Stop();
}
Upvotes: 1