所以我Timer
中有一个Activity
,我希望每隔10秒运行一次。
我创建了System.Threading.Timer
:
timer = new Timer ((o) => {
Action syncAct = new Action (async delegate() {
await FetchData();
});
RunOnUiThread (syncAct);
}, null, 0, 10000);
这里的问题是await FetchData()
花费的时间超过10秒,导致计时器永远持续下去。我需要在同步完成后每次启动计时器。我怎么能这样做?
感谢您的时间。
答案 0 :(得分:1)
尝试生成一个休眠10秒的线程并运行代码。
大致如此:
\\declare doRun as a boolean field
new Thread()
{
public void run()
{
yourClass.doRun = true;
while(yourClass.doRun)
{
fetchData();
try {
sleep(10000);
} catch(InterruptedException e)
break;
}
}
}
}.start();
将doRun
设置为false
以退出该主题。
或者您可以将线程分配给变量而不是匿名线程,并调用yourThread.interrupt();