Таймер c windows forms

Таймер c windows forms

У меня две формы окон. Мне нужно открыть вторую форму за каждый отрегулированный интервал времени. И вторая форма должна отображаться в течение указанных секунд. В mainForm:

Во второй форме:

У меня возникла следующая ошибка при попытке закрыть вторую форму: "Неверная операция кросс-потоков: Control" reminderForm "обращается из потока, отличного от потока, который был создан на"

Как я могу это исправить?

c# timer winforms

3 ответа

4 Решение JaredPar [2012-03-02 19:57:00]

Проблема здесь заключается в том, что вы комбинируете приложение System.Timers.Timer и WinForms. Elapsed вызов будет происходить в потоке пула потоков. Это незаконно для связи с элементом winforms из любого потока, кроме потока пользовательского интерфейса. Следовательно, когда вы выполняете следующую строку из обратного вызова, вы получаете исключение

Чтобы исправить это, просто используйте System.Windows.Forms.Timer . Это приведет к увеличению его событий в потоке пользовательского интерфейса, и вы можете избежать любой связи по нисходящим потокам.

Вам нужно проверить флаг InvokeRequired . Это должно сообщить вам, что вам нужно знать: http://msdn.microsoft.com/en-us/library/ms171728.aspx

Вы должны вызывать весь связанный с UI код в потоке пользовательского интерфейса. Первое, что вы должны сделать, это удаление статических слов

Таймер. Работа с таймером в C#

Доброго времени суток! В этой статье я расскажу об использовании таймера в программах, написанных на C#, а в конце мы напишем простейшую программу часы. Статья будет практического характера и для её понимания Вам нужно владеть начальными знаниями программирования на языке C# и работы с WindowsForms приложениями. Но сначала, я расскажу для чего же нужны таймеры в программах. Чаще всего, таймеры используют для периодического вызова определенного метода (подпрограммы). У компонента «Timer» есть специальное (и единственное событие) — «Tick». Вот обработчик этого события, далее обработчик таймера, и вызывается с заданной программистом периодичностью.

Читайте также:  Как сделать автосодержание в ворде 2010

Как я уже сказал, рассказ о таймерах будет в контексте WindowsForms. Так что я предлагаю создать новый проект приложения с графическим интерфейсом (WindowsForms). После чего, на главную форму из панели инструментов перенести компонент «Timer». Расположение компонента «Timer» в панели инструментов показано на рисунке ниже.

Данный компонент не является видимым на форме, поэтому, в дизайнере форм Вы его не увидите, но он будет в неком контейнере по формой, как показано на рисунке ниже.

Компонент Timer в дизайнере (под формой)

И если выбрать данный компонент в дизайнере форм, то можно увидеть его свойства, которых не так много — всего шесть. Я расскажу о самых важных, которые мы будем использовать. А сейчас, давайте посмотрим на свойства таймера (см. рисунок ниже).

Свойства компонента Timer

  • Свойство «Name» задает название таймера (скорее даже его уникальное имя, так как на форме может быть не один такой компонент);
  • Свойство «Eneble» делает таймер доступным (если установлено в true) или наоборот — недоступным (если установлено в false);
  • Свойство «Interavl» задает интервал, через который будет периодически вызываться обработчик таймера.

Так же у компонента «Timer» есть два интересующих нас метода:

  • Start — запускает таймер (после вызова этого метода, будет периодически «срабатывать» обработчик таймера);
  • Stop — останавливает таймер (после вызова этого метода, обработчик таймера перестанет «срабатывать» ).

А вот и то самое событие «Tick»:

Событие (Tick) таймера

А теперь, давайте приступим к практике. Для наглядности, я решил написать программу часы. Конечно, полноценными часами эту программу назвать нельзя, но она будет показывать время. Причем, не всегда, а только когда мы запустим таймер, который будет «срабатывать» раз в секунду, и выводить текущее время в надпись на форме. Для запуска и остановки таймера будут использоваться две кнопки.

Читайте также:  Как запустить игру если она не запускается

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

Главное окно программы

Как видите, программа максимально простая: две кнопки, да текстовая надпись. А теперь, давайте перейдем к коду. Я создал обработчики событий клика для каждой копки и события «Tick» таймера. Код приведен ниже:

Всё довольно просто! А вот так будет выглядеть запущенная программа после нажатия на кнопку «Старт».

Уроки программирования, алгоритмы, статьи, исходники, примеры программ и полезные советы

ОСТОРОЖНО МОШЕННИКИ! В последнее время в социальных сетях участились случаи предложения помощи в написании программ от лиц, прикрывающихся сайтом vscode.ru. Мы никогда не пишем первыми и не размещаем никакие материалы в посторонних группах ВК. Для связи с нами используйте исключительно эти контакты: vscoderu@yandex.ru, https://vk.com/vscode

Исходный код: таймер на C# в Windows Forms

Разбираем создание таймера на языке программирования C# в приложении Windows Forms. Полный исходный код с подробными комментариями можно будет скачать внизу страницы.

Для начала в Windows Forms создаём внешнюю оболочку программы. У нас она выглядит вот так:

Здесь у нас 8 Label’ов, 3 TextBox’a, 3 Buttom’a и сам Timer.

Примечание: при переносе элемента Timer в форму, на неё ничего не появляется. Лишь в нижней части окна программы под формой появляется значок , не пугайтесь.

Щёлкнем на значок таймера и в окне “Свойства” в группе “Поведение” устанавливаем значение параметра Interval равным 1000. Данный параметр определяет длину тика таймера в миллисекундах, указав 1000, мы сделали один тик равным одной секунде.

После оформления и настройки приступаем к коду. Вводим целочисленные переменные h – часы, m- минуты, s – секунды.

Читайте также:  Для чего нужен стим

Затем дважды щёлкаем мышью на кнопке “Старт” и переходим на участок кода, отвечающий за клик на эту кнопку.

Ссылка на основную публикацию
Считается что каждый символ кодируется 16 битами
--> Играть в ЕГЭ-игрушку Мобильный справочник Карточки НАШИ БОТЫ Считая, что каждый символ кодируется 16 битами, оцените информационный объем следующей...
Стиральная машина самсунг горит красный замок
Любая стиральная машина в независимости от марки производителя иногда выходит из строя. Довольно частым признаком неисправности, является мигание индикатора замка....
Стиральная машинка lg не выжимает
Покупка стиральной машинки – знаменательное событие для любой хозяйки. Незаменимая помощница позволяет женщинам экономить личное время, не тратя его на...
Съезд выслушал меня молча вспоминал
февраля 1956 г. вошло не только в отечественную, но и в мировую историю. В этот день на закрытом заседании XX...
Adblock detector