在我的应用程序中,我想设置一个计时器来计算工作时间。我的计时器工作正常,但当我切换到另一页时,它停止工作。如何运行计时器并计算在后台运行的总时间。这是我的代码
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
中实现这一目标?
答案 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