如何在xamarin表单中以后台运行计时器?

时间:2017-12-14 13:11:02

标签: xamarin xamarin.forms

在我的应用程序中,我想设置一个计时器来计算工作时间。我的计时器工作正常,但当我切换到另一页时,它停止工作。如何运行计时器并计算在后台运行的总时间。这是我的代码

Stopwatch st = new Stopwatch();

private void WorkClockStart(object sender,EventArgs e)
{
    if(LaborClock.Text == "Start Work Clock")
    {
        LaborClock.Text = "Stop Work Clock";

        Device.StartTimer(TimeSpan.FromMilliseconds(1), () =>
        {
            st.Start();
            return false;
        });
    }
    else
    {
        st.Stop();
        long elapsed = st.ElapsedMilliseconds;
        var sec = elapsed / 1000;
        DisplayAlert("Message", "Worked Time(Sec): " + sec, "ok");
        LaborClock.Text = "Start Work Clock";
        st.Reset();
    } 
}

如何在Xamarin.Forms中实现这一目标?

2 个答案:

答案 0 :(得分:2)

为什么要使用计时器?只需在启动手表时将DateTime.Now存储在变量中,并在停止时使用DateTime.Now计算增量。 然后你可以存储在你想要的任何地方(例如在static变量中,或者如果你想要的话,在App.cs中根据你的要求存储)

答案 1 :(得分:0)

我同意Daniel,您可以使用class predicates search_bdth : (string, string). bdth : (slistlist, string, slist [out]) nondeterm. show_answer : (slist) determ. clauses search_bdth(Start, Finish) :- bdth([[Start]], Finish, Way), show_answer(Way). bdth([[Finish | Tail] | _], Finish, [Finish | Tail]). bdth([TempWay | OtherWays], Finish, Way) :- Ways = [ W || prolong(TempWay, W) ], append(OtherWays, Ways, NewWays), bdth(NewWays, Finish, Way). show_answer([_]) :- !. show_answer([A, B | Tail]) :- show_answer([B DateTime,就像下面的代码一样。

Task.Factory.StartNew