我希望在后台进程上获取一些数据,如日期和时间,并在不阻止UI过程的情况下更新UI,我尝试使用此代码执行此操作:
var dateTime = await Api.Get<DateTime>("api/getNow");
MyTextView.Text = dateTime;
但是这段代码阻止了用户界面,我需要每30分钟获取一次数据,因此我添加了我在Xamarin中找到的代码:
TimerCallback timerDelegate = new TimerCallback(CheckStatus);
Timer timer = new Timer(timerDelegate, s, 30000, 30000);
但在Zebble中Timer没有定义4个参数。
答案 0 :(得分:0)
要在UI上运行某些代码,您可以使用以下代码:
Device.UIThread.Invoke(()=>{ //UI code });
要在后台进程上运行一些代码,并且当UI正在处理另一个进程时你需要做一些事情,你可以使用如下的ThreadPool:
Device.ThreadPool.Invoke(()=>{ //Background Code });
之后,如果您想在一段时间内运行一些代码,可以使用Timer in Thread命名空间,如下所示:
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项目的贡献者并从事技术支持。