Как отобразить текущее время в приложении wp7? - PullRequest
0 голосов
/ 07 марта 2012

У меня есть TextBlock в моем заявлении.Я хочу обновлять его каждую секунду, чтобы показать текущее время.

Как мне это сделать?Первое, что я хотел сделать, это создать экземпляр System.Thread.Timer и обновить текст ...

clockTimer = new Timer(o =>
{
    Dispatcher.BeginInvoke(() =>
    {
        currentTime.Text = DateTime.Now.ToShortTimeString();
    });
}, null, 0, 1000);

Но нормально ли вызывать Dispatcher каждую секунду?

ЕслиЯ использую привязку, каково будет ее поведение?Это лучше для производительности, чем звонить Dispatcher?(рассмотрите возможность нескольких вызовов Dispatcher каждую секунду и нескольких привязок)

Ответы [ 2 ]

3 голосов
/ 07 марта 2012

Вместо этого вы можете использовать DispatcherTimer.

Примерно так:

        DispatcherTimer dt = new DispatcherTimer();
        dt.Interval = TimeSpan.FromMilliseconds(1000);

        dt.Tick += (s, e) => { currentTime.Text = DateTime.Now.ToShortTimeString(); };

        dt.Start();

При этом не должно быть вреда, просто не задерживайтесь слишком долго во время тикового события.

Кроме того, если вы делаете это в связывании, вам понадобится какой-то таймер вокруг него, чтобы обновить свойство привязки, поэтому, хотя я всегда предпочитаю привязку данных, чем прямое манипулирование элементом управления, это не должно ' В любом случае это не имеет значения.

2 голосов
/ 07 марта 2012

"Можно ли вызывать диспетчер каждую секунду?"

Это очень спорно.
Если это необходимо для функционирования приложения, тогда вы должны.
Тем не менее, мобильное устройство предназначено только для использования, когда оно питается от аккумулятора. Каждое действие вашего кода в конечном итоге приводит к использованию большей мощности. Если вы можете написать (или спроектировать) приложение, которое не требует такой большой работы, то в конечном итоге вы избежите более быстрой разрядки батареи.

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

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