Елемент управління Timer в AJAX Framework - все про IT та програмування

Written on 21 Листопада 2008 . Posted in ASP.NET

ЗМІСТ

Виконуємо постбек кожні n мілісекунд

Елемент управління Timer створений для того, щоб періодично викликати постбек. Його властивість Interval вказує кількість мілісекундів до запуску постбека. Під час постбеку викликається подія Tick Timer.

І це все! Елемент керування Timer за промовчанням викликає постбек для всієї сторінки, але вам необхідно, щоб він викликав частковий постбек. Це може бути здійснено двома шляхами:

  • Шляхом розташування елемента Timer разом із UpdatePanel. Коли спрацює Timer він викликає постбек, але оскільки він знаходиться в UpdatePanel, постбек стає частковим.
  • Шляхом розташування елемента Timer поза UpdatePanel, але при цьому додавши його як тригер UpdatePanel. Перегляньте статтю "Використовуємо UpdatePanel" щодо виклику часткового постбека з UpdatePanel, використовуючи при цьому елементи керування, що знаходяться за межами UpdatePanel.
Щоб оновити екран або виконати будь-які інші дії під час постбека, викликаного елементом Timer, створіть обробник події для події Tick.

  • Елемент управління Label, названий StockPrice, який використовується для відображення котирувань акції компанії.
  • Елемент управління Image, який відображає або картинку з мішком грошей, або збанкрутілого хлопця, залежно від поточних котирувань акції. (Трохи гумору не завадить.)
  • Інший елемент керування Label, названий CurrentPanelTime, відображає час останнього оновлення UpdatePanel.
Я також додав елемент управління Timer в UpdatePanel і встановив його властивість Interval значення 5000.Кожні п'ять секунд Timer спрацьовуватиме, тим самим викликаючи частковий постбек, а також викликаючи подію Tick.

На даний момент декларативна розмітка вашої сторінки має виглядати приблизно так:

Додайте метод, названий UpdateStockPrice, до сторінки класу code-behind. Даному методу необхідно визначити поточне котирування акції, відобразити його в елементі StockPrice Label та завантажити відповідне зображення. Як видно з нижченаведеного коду, котирування акції просто є навмання обраним числом в інтервалі від 0 до 100. Більше того, властивість ForeColor елемента StockPrice встановлено в червоному кольорі (Red) і відображається зображення з банкрутом у випадку, якщо котирування акції менше ніж $50.00; властивість ForeColor встановлено у зеленому кольорі (Green) і відображається зображення з мішком грошей у разі, якщо ціна акції більша або дорівнює $50.00.

Необхідно викликати метод UpdateStockPrice у випадку, якщо сторінка була вперше завантажена, а також, коли викликається подія Tick елемента Timer. Створіть подію Page_Load у класі code-behind та встановіть властивість Text обох елементів Label у поточне значення часу. Також викличте метод UpdateStockPrice, якщо Page.IsPostback дорівнює значенню False (тобто сторінка відвідана вперше, а не після постбека):

Далі створіть обробник для події Tick елемента Timer і, перебуваючи там, викличте метод UpdateStockPrice:

Маючи цю декларативну розмітку та код, відвідайте сторінки за допомогою браузера. Щоп'ять секунд Timer буде викликати частковий постбек, виробляється поточне котирування акції, і екран оновлюється (точніше тільки частина екрану). Наступне зображення показує сторінку під час першого візиту. Зауважте, що час останнього повноцінного постбека(початкове завантаження сторінки) та час останнього оновлення UpdatePanel збігаються.

елемент

Зауважте, що час, показаний у UpdatePanel, на п'ять секунд більше, ніж час завантаження сторінки.

елемент

Запуск та зупинка елемента керування Timer

За замовчуванням, елемент керування Timer починає відлік з моменту завантаження сторінки, і продовжує викликати постбеки кожні n мілісекунд. Якщо вам необхідно зупинити відлік в елементі Timer, у вас є два шляхи:

  • Вимкнути Timer на серверній стороні, або
  • Зупинити Timer на стороні клієнта.

Щоб реалізувати серверну функціональність, я доповнив приклад, який використовує елемент Timer шляхом додавання елемента Button в UpdatePanel. Я також встановив властивість Text даного елемента значення "Pause" і створив обробник події Click. В обробнику події я змінюю значення властивості Enabled елемента керування Timer і оновлюю властивість Text елемента Button, змінюючи його з "Pause" на "Resume" при зупинці таймера, або з "Resume" назад на "Pause" - при його запуску. Я також викликаю метод UpdateStockPrice при запуску таймера, тим самим відновлення елементу Timer миттєво оновлює котирування акції (на відміну від випадку, коли нам довелося б чекати п'ять секунд до того, як буде задіяно елемент Timer).