簡體   English   中英

Xamarin PCL缺少System.Timer

[英]System.Timer missing from Xamarin PCL

我正在使用.Net 4.5.1構建一個針對IOS Android和Windows Phone 8.1的Xamarin跨平台應用程序。 當我嘗試在PCL項目中引用System.Timers時,它不存在。 我該如何解決?

您可以使用:Device.StartTimer

句法 :

public static void StartTimer (TimeSpan interval, Func<bool> callback)

示例:每1秒遞增1分鍾

int number = 0;
Device.StartTimer(TimeSpan.FromSeconds(1),() => {
    number++;
    if(number <= 60) 
    {
        return true; //continue
    }
    return false ; //not continue

});

示例:等待5秒鍾以運行一次功能

Device.StartTimer(TimeSpan.FromSeconds(5),() => {
    DoSomething();
    return false ; //not continue
});

前幾天我注意到了這一點。 雖然這個類是在API文檔System.Threading.Timer Class ..Annoying。

無論如何,我使用Task.Delay()創建了自己的Timer類:

public class Timer
{

        private int _waitTime;
        public int WaitTime
        {
            get { return _waitTime; }
            set { _waitTime = value; }
        }

        private bool _isRunning;
        public bool IsRunning
        {
            get { return _isRunning; }
            set { _isRunning = value; }
        }

        public event EventHandler Elapsed;
        protected virtual void OnTimerElapsed()
        {
            if (Elapsed != null)
            {
                Elapsed(this, new EventArgs());
            }
        }

        public Timer(int waitTime)
        {
            WaitTime = waitTime;
        }

        public async Task Start()
        {
            int seconds = 0;
            IsRunning = true;
            while (IsRunning)
            {
                if (seconds != 0 && seconds % WaitTime == 0)
                {
                    OnTimerElapsed();
                }
                await Task.Delay(1000);
                seconds++;
            }
        }

        public void Stop()
        {
            IsRunning = false;
        }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM