Xamarin,Android:OnTimedEvent在推出后不会停止?

时间:2017-04-25 12:13:44

标签: android xamarin

所以这是有线的: 这是我的倒计时:

    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秒就会持续射击,我真的不明白为什么?

任何帮助都将不胜感激!!

谢谢:)

1 个答案:

答案 0 :(得分:1)

我假设您只调用CountDown()一次,然后启用计时器或禁用它,但根据您的描述,您已启用它,那么您可能永远不会调用{{1} }再次禁用您的计时器,否则您将多次订阅您的CountDown()事件。

猜猜你需要的只是一次火Elapsed,然后你可以取消订阅,例如:

OnTimedEvent