所以这是有线的: 这是我的倒计时:
public void CountDown()
{
System.Timers.Timer timer = new System.Timers.Timer();
timer.Interval = 5000;
timer.Elapsed += OnTimedEvent;
if (TimerRunning == true)
{
timer.Enabled = true;
}
else
{
timer.Enabled = false;
TimerRunning = false;
}
所以,我从我的MainActivity移交一个布尔值,当我按下开始按钮时,设置TimmerRunning = true,当按下停止按钮时,设置TimerRunning = false。
这是我的OntimedEvend:
public void OnTimedEvent(object sender, System.Timers.ElapsedEventArgs e)
{
// Check if really timer is okay to launch
if (MainActivity.CountDownRunning == true)
{
TimerRunning = true;
}
else
{
TimerRunning = false;
}
// Check the checkbox status
if (MainActivity.CheckBoxTicked == true)
{
var MockingObject = new MockTheLocation(this);
MockingObject.getMockLocation2PROMODE();
Log.Info("2", "CountDown ausgeführt! Pro Mode ON");
}
else
{
var MockingObject = new MockTheLocation(this);
MockingObject.getMockLocation2();
Log.Info("2", "CountDown ausgeführt! Pro Mode OFF");
}
所以,这是应该发生的事情。
OnTimedEvend
被解雇了。它从我的boolean
检查MainActivity
,来自此类TimerRunning的内部bool是真还是假。现在,5秒后我的倒计时再次启动,并获得一个设置为false的boolean
。现在它应该将Timer.Enabled设置为“false”。但事件每隔5秒就会持续射击,我真的不明白为什么?
任何帮助都将不胜感激!!
谢谢:)
答案 0 :(得分:1)
我假设您只调用CountDown()
一次,然后启用计时器或禁用它,但根据您的描述,您已启用它,那么您可能永远不会调用{{1} }再次禁用您的计时器,否则您将多次订阅您的CountDown()
事件。
猜猜你需要的只是一次火Elapsed
,然后你可以取消订阅,例如:
OnTimedEvent