powered by simpleCommunicator - 2.0.49     © 2025 Programmizd 02
Форумы / WPF, Silverlight [игнор отключен] [закрыт для гостей] / Поведение DispatcherTimer
3 сообщений из 3, страница 1 из 1
Поведение DispatcherTimer
    #39401499
Здравствуйте!

Подскажите, кто знает, как будет вести себя объект DispatcherTimer при DispatcherPriority=ApplicationIdle? Меня интересует момент, когда пользователь что-то делает с программой, в таймере счетчик обнуляется и потом начинает считать заново, или продолжает считать с места прерывания?

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

Спасибо
...
Рейтинг: 0 / 0
Поведение DispatcherTimer
    #39402237
vb_sub
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Артемий Соболев,
почему бы не попробовать?
...
Рейтинг: 0 / 0
Поведение DispatcherTimer
    #39402348
Roman Mejtes
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vb_subАртемий Соболев,
почему бы не попробовать?
не будет таймер работать, пока Dispatcher занят. DispatcherPriority в конструкторе определяет только то, как callback метод будет вызван через Dispatcher.BeginInvoke().
Пока, что то выполняется (синхронно) таймер работать не будет. За вызов callback метода отвечает не сам таймер, а Dispatcher, в который этот метод добавляется.
Вот в этом примере, между Begin и End таймер "тикать" просто не будет. Что вполне логично.
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
    public partial class MainWindow : Window
    {
        public MainWindow()
        {
            InitializeComponent();
        }

        int ticksCount = 0;

        private void OnTick(object sender, EventArgs e)
        {
            ticksCount++;
            Debug.Print(ticksCount.ToString());
        }

        private async void Button_Click(object sender, RoutedEventArgs e)
        {
            var dispatcherTime = new DispatcherTimer(TimeSpan.FromSeconds(1.0), DispatcherPriority.Background, OnTick, Dispatcher.CurrentDispatcher);
            var currentTime = DateTime.Now;
            await Task.Delay(TimeSpan.FromSeconds(5.0));
            Debug.Print("Begin");
            while (DateTime.Now < currentTime + TimeSpan.FromSeconds(10.0))
            {

            }
            Debug.Print("End");
        }
    }
...
Рейтинг: 0 / 0
3 сообщений из 3, страница 1 из 1
Форумы / WPF, Silverlight [игнор отключен] [закрыт для гостей] / Поведение DispatcherTimer
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]