Выполнение действия ОДНАЖДЫ после задержки n секунд, WP7 C # - PullRequest
1 голос
/ 01 февраля 2012

Я ищу простой способ выполнить действие / метод с задержкой в ​​n секунд.Я нашел несколько примеров, но они кажутся слишком сложными, потому что на моей последней платформе iOS это было просто

[self performSelector:@selector(methodname) withDelay:3];

. Любые советы или фрагменты кода будут высоко оценены.

Ответы [ 4 ]

5 голосов
/ 01 февраля 2012

Вы также можете использовать Scheduler.Dispatcher из Microsoft.Phone.Reactive:

Scheduler.Dispatcher.Schedule(MethodName, TimeSpan.FromSeconds(5));

private void MethodName()
{
    // This happens 5 seconds later (on the UI thread)
}
4 голосов
/ 01 февраля 2012
DispatcherTimer DelayedTimer = new DispatcherTimer()
{
    Interval = TimeSpan.FromSeconds(5)
};
DelayedTimer.Tick += (s, e) =>
{
    //perform action
    DelayedTimer.Stop();
}
DelayedTimer.Start();
1 голос
/ 09 декабря 2014

Для Windows Phone 8 вы можете использовать

await Task.Delay(milliseconds);
0 голосов
/ 01 февраля 2012
 DispatcherTimer timer = new DispatcherTimer();

    timer.Tick += (s, e) =>
        {
            // do some very quick work here

            // update the UI
            StatusText.Text = DateTime.Now.Second.ToString();
        };

    timer.Interval = TimeSpan.FromSeconds(1);
    timer.Start();

Обратите внимание, что здесь вы прерываете поток пользовательского интерфейса, а не запускаете что-либо в отдельном потоке. Он не подходит для чего-то длительного и интенсивного использования процессора, а скорее для того, что нужно выполнять через регулярные промежутки времени. Обновления интерфейса часов - отличный пример.

Также не гарантируется, что таймеры будут работать точно, когда наступит временной интервал, но они гарантированно не выполнятся до наступления временного интервала. Это связано с тем, что операции DispatcherTimer помещаются в очередь Dispatcher, как и другие операции. Время выполнения операции DispatcherTimer зависит от других заданий в очереди и их приоритетов.

Для получения дополнительной информации используйте эту ссылку

Если вы хотите использовать таймер для фоновой задачи, используйте System.Threading.Timer вместо DispatcherTimer

Для получения дополнительной информации используйте эту ссылку

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...