-1

我想在后台进程中获取一些数据,例如日期和时间,并在不阻塞 UI 进程的情况下更新 UI,我尝试使用以下代码来做到这一点:

var dateTime = await Api.Get<DateTime>("api/getNow");
MyTextView.Text = dateTime;

但是这段代码阻止了 UI,我需要每 30 分钟获取一次这些数据,因此我在下面添加了我从 Xamarin 找到的代码:

TimerCallback timerDelegate = new TimerCallback(CheckStatus);

Timer timer = new Timer(timerDelegate, s, 30000, 30000);

但是在 Zebble 中,Timer 没有用 4 个参数定义。

4

1 回答 1

0

要在 UI 上运行一些代码,您可以使用以下代码:

Device.UIThread.Invoke(()=>{    //UI code   });

为了在后台进程上运行一些代码,并且当 UI 在另一个进程上工作时你需要做一些事情,你可以使用 ThreadPool,如下所示:

Device.ThreadPool.Invoke(()=>{ //Background Code });

之后,当您想在一段时间内运行一些代码时,您可以使用 Thread 命名空间中的 Timer,如下所示:

var s = new TimerExampleState();
var timerDelegate = new TimerCallback(() =>
{
     //Your code
});
var timer = new Timer(timerDelegate, s, 1000, 1000);

有关更多信息,您可以查看以下链接:http: //zebble.net/docs/understanding-zebble-threading

免责声明:我是 Zebble 项目的贡献者并从事技术支持。

于 2017-05-11T05:57:29.003 回答