C # как использовать таймер? - PullRequest
0 голосов
/ 20 апреля 2010

Я создал программу check_list для студентов, которая использует адаптер Bluetooth, ищет сотовые телефоны студентов и проверяет, присутствуют они или нет, и сохраняет информацию о студентах с датой в таблице в базе данных. Все они отлично работают. Но я хочу сделать это автоматически что я поставлю свою программу на какой-нибудь компьютер, например, работающий в качестве сервера, и программа будет выполнять поиск при каждом запуске урока, например, 08.30, 10.25 ...

Мой вопрос, как использовать таймер? Я знаю, как использовать таймер, но как я могу использовать его во время начала каждого занятия? У меня есть таблица с указанием времени начала занятий. Также я должен остановить таймер после окончания поиска? И если я остановлю таймер, могу ли я снова запустить таймер?

И еще один вопрос: как я могу отследить, что пришли новые ученики или кто-то покинул классную комнату?

Ответы [ 4 ]

1 голос
/ 20 апреля 2010
0 голосов
/ 20 апреля 2010

Я бы использовал Quartz.NET и планировал задания вместо того, чтобы связываться с таймером ...

0 голосов
/ 20 апреля 2010

Вы можете установить свойство таймера Interval как разницу между текущим временем и временем следующего урока; затем сбросьте разницу после того, как этот урок закончен, чтобы быть готовым к следующему. Однако в этом есть очевидные подводные камни. Что происходит, когда вы запускаете / останавливаете таймер? Вам нужно будет сбросить интервал для следующего урока.

Или, вы можете сделать таймер, который периодически проверяет, пора ли перепроверять устройства Bluetooth и делает ли это время. Это, вероятно, не должно быть слишком точным.

// Add your own DateTimes
DateTime[] times = new[] { new DateTime(2010, 4, 20, 16, 30,0,0), new DateTime(2010, 4, 20, 17, 0,0,0) };

Timer t = new Timer();
t.Interval = 30000; // 30 seconds, feel free to change

// Each 30 secs check to see if the _time_ is before one of the ones specified; if it is RunMethod()
t.Tick += (sender, e) => { if (times.Any(d => { DateTime dt = DateTime.Now; new DateTime(dt.Year, dt.Month, dt.Day, d.Hour, d.Minute, d.Second, d.Millisecond).CompareTo(dt) <= 0 })) RunMethod(); }
0 голосов
/ 20 апреля 2010

Вы можете периодически проверять текущее время (как каждые 30 секунд с простым таймером) и, если ничего не происходит, вы спите, если оно составляет 10.25: начните свой опрос по Bluetooth.

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

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