【发布时间】:2017-05-01 07:33:30
【问题描述】:
我正在尝试在 Xamarin Forms 中制作秒表,并且想知道是否应该使用本机 UI 线程或并行任务库来不断更新时间标签?
我尝试使用 PT Lib,但无法让它更新我的标签,这让我认为我应该使用本机线程,但我担心我是否能够更新 UI使用依赖服务。
是否有一种最佳做法是不断更新 UI,但仍能执行其他任务,例如单击按钮?
更新:我得到了下面的代码,但这是一种好的做法吗?我不断更新时间标签,同时还能按圈按钮。
Stopwatch sw = new StopWatch();
bool inRace = false;
async void StartLapClick(object sender, System.EventArgs e)
{
if (!inRace)
{
inRace = true;
sw.Start();
updateTimer();
}
}
async void updateTimer()
{
await Task.Run(() =>
{
while(inRace)
{
string slc = sw.Elapsed.ToString();
Device.BeginInvokeOnMainThread(() =>
{
timerLbl.Text = slc;
});
Task.Delay(100).Wait();
}
});
}
【问题讨论】:
-
您的秒表需要什么分辨率?秒还是亚秒?
-
@ctacke 我会以分钟为单位显示时间:seconds.miliseconds
标签: multithreading xamarin.forms async-await task-parallel-library ui-thread