Android中Timer的系统线程

时间:2014-12-14 02:15:48

标签: c# android multithreading timer xamarin

所以我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秒,导致计时器永远持续下去。我需要在同步完成后每次启动计时器。我怎么能这样做?

感谢您的时间。

1 个答案:

答案 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();