Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > Windows Forms
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 12.01.2011, 03:24   #1
Invisible_
Пользователь
 
Регистрация: 21.11.2010
Сообщений: 14
По умолчанию Timer в MS visual studio 2010

Помогите решить проблему с таймером (элемент Timer). При задании Interval=60 000 функция сробатывает через 1 минуту (так и должно быть (1мин=60сек, 1сек=1000мс)), а вот если написать 1000, то функция сробатывает не черес 1 секунду , а через 2. В чем проблема?
Invisible_ вне форума Ответить с цитированием
Старый 12.01.2011, 04:17   #2
like-nix
Форумчанин
 
Регистрация: 09.11.2009
Сообщений: 104
По умолчанию

код покажите
like-nix вне форума Ответить с цитированием
Старый 12.01.2011, 04:33   #3
Invisible_
Пользователь
 
Регистрация: 21.11.2010
Сообщений: 14
По умолчанию

Код:
int m; //количество минут
		int s; //секунды

	private: System::Void button1_Click(System::Object^  sender, System::EventArgs^  e) {
				 if(timer1->Enabled)
			 {
				 //Если кнопка пуск нажата таймер начинает работу
				 timer1->Enabled=false;
				 button1->Text="Пуск";
				 button2->Enabled=true;
				 label3->Visible=true;
			 }
			 else
			 {
				 timer1->Enabled=true;
				 button1->Text="Стоп";
				 button2->Enabled=false;
			 }
			 }
private: System::Void button2_Click(System::Object^  sender, System::EventArgs^  e) {
				m=0;
				s=0;
				label1->Text="00";
				label2->Text="00";
		 }

private: System::Void timer1_Tick(System::Object^  sender, System::EventArgs^  e) {
			 if(label3->Visible)
					  {
						  if(s < 59)
						  {
							  s+=1;
							  if(s < 10)
								  label2->Text="0" + s.ToString();
							  else
								  label2->Text=s.ToString();
						  }
						  else
						  {
							  if (m < 59)
							  {
								  m++;
								  if(m < 10)
									  label1->Text="0" + m.ToString();
								  else
									  label1->Text=m.ToString();
								  s=0;
								  label2->Text = "00";
							  }
							  else
							  {
								  m=0;
								  label1->Text = "00";
							  }
						  }
						  label3->Visible=false;
					  }
					  else
						  label3->Visible=true;
		 }
Invisible_ вне форума Ответить с цитированием
Старый 12.01.2011, 04:35   #4
Invisible_
Пользователь
 
Регистрация: 21.11.2010
Сообщений: 14
По умолчанию

с кодом все нормально. Непонятно поведение таймера при вводе значения равым 1000. Функция timer1_Tick должна выполнится через 1 сек , а выполняется за 2сек.
Invisible_ вне форума Ответить с цитированием
Старый 12.01.2011, 04:39   #5
Invisible_
Пользователь
 
Регистрация: 21.11.2010
Сообщений: 14
По умолчанию

окно формы
Изображения
Тип файла: jpg Безымянный.jpg (12.0 Кб, 74 просмотров)
Invisible_ вне форума Ответить с цитированием
Старый 12.01.2011, 04:41   #6
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

Windows не является системой реального времени.
в таймере возможны погрешности(в зависимости от загруженности машины они отличаются)

поэтому попробуйте привязыватся ко времени машины, для компенсации погрешности.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 12.01.2011, 04:43   #7
Invisible_
Пользователь
 
Регистрация: 21.11.2010
Сообщений: 14
По умолчанию

Значение интервала я задаю изначально
Изображения
Тип файла: jpg Безымяbdfнный.jpg (37.7 Кб, 67 просмотров)
Invisible_ вне форума Ответить с цитированием
Старый 12.01.2011, 04:44   #8
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

это все можно было уместить в минимальном количестве постов(1-2), не занимайтесь мультипостингом
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 12.01.2011, 04:44   #9
Invisible_
Пользователь
 
Регистрация: 21.11.2010
Сообщений: 14
По умолчанию

Тогда подскажите функии для работы со временем
Invisible_ вне форума Ответить с цитированием
Старый 12.01.2011, 04:47   #10
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

http://msdn.microsoft.com/en-us/libr....datetime.aspx
тут все есть.(если плюсов нет, то смотрите шарп примеры, все равно на C++ CLR пишите)
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Visual Studio 2010 и C Frolov Софт 12 19.12.2010 15:29
visual studio 2010 Voblax Visual C++ 8 12.12.2010 19:58
Expression Studio и Visual Studio 2010 ждать ли русские версии? Casper-SC Свободное общение 31 25.05.2010 14:31
Visual studio 2010 Dimarik Общие вопросы .NET 1 24.05.2010 01:43