以xamarin形式运行两个后台任务

时间:2018-01-11 13:14:03

标签: c# xamarin concurrency xamarin.forms task

我想在我的xamarin表单移动应用程序上运行两个后台线程。

问题在于我希望以不同的频率调用这些任务。

要打电话给我,我这样做了:

 protected  override void OnStart()
    {
        // Handle when your app starts
        // On start runs when your application launches from a closed state, 
        if (!stopWatch.IsRunning)
        {
            stopWatch.Start();
        }

        Device.StartTimer(new TimeSpan(0, 0, 1), () =>
       {
           if (stopWatch.IsRunning && stopWatch.Elapsed.Seconds == 20) //first task
           {
               MyMethod(this).ContinueWith((Task t) =>
                {
                    stopWatch.Restart();
                       return true;
                });
           }


         //second method?



           //  Always return true as to keep our device timer running, false if we want to cancel the timer.
           return true;
        });
    }

这段代码运行良好。问题是我想调用第二个任务,但频率不同。我应该把它放在哪里?

1 个答案:

答案 0 :(得分:0)

我只使用一个Timer,使用一个适用于它们的间隔,并使用计数器来查看要触发的内容。

例如,如果你有一个任务在20秒运行而另一个在30秒运行。将间隔设置为10秒。使用类级变量来保存计数并在第二个任务之后重置它。

        intervalCount++;
        if(intervalCount == 2)
        {
            // Do function 1
        }
        else if(intervalCount == 3)
        {
            // Do function 2 and reset our counter
            intervalCount == 0;
        }