powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / Как пользоваться таймером?
4 сообщений из 4, страница 1 из 1
Как пользоваться таймером?
    #34516817
Romka_84
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всем здравствуйте. Граждане, проясните меня пожалста по следующему вопросу: есть процедура в цикле, которая сильно загружает процессор, к примеру так:

for(int i=0; i<=max; i++) {My Proc};

хотелось бы, чтобы на форме время от времени отображались какие-нить надписи, типа "Чичас выполняется нечто для шага i". Если в этот цикл просто засунуть строку this->mylbl->text="qwerty", то эта надпись, я так понимаю, просто не успевает отобразиться, т.к. все ресурсы компутера заняты процедурой. Соответственно нужно как то либо обновить форму, либо поставить какойнить таймер. Вот ток как это дело делается я никак не догоняю. Если ктонить знает как пользоваться таймером(у меня он почемуто никак не хочет выполнять свою непосредственную функцию) или что нить, что поможет моей проблеме - подскажите пожайлуста, буду очень благодарен(все происходит в Visual Studio на С++).
...
Рейтинг: 0 / 0
Как пользоваться таймером?
    #34516906
enkarito
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если цикл действительно долгий, то вероятно его следует вынести в отдельную нить(поток, процесс). Ключевое слово Thread.
...
Рейтинг: 0 / 0
Как пользоваться таймером?
    #34517710
Romka_84
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
enkaritoЕсли цикл действительно долгий, то вероятно его следует вынести в отдельную нить(поток, процесс). Ключевое слово Thread.

Большое спасибо за совет. Но, млин, почитав про эту штуку и попробовав её на деле как то все не очень получилось :(. Ситуация следующая:

у меня:

build_index ind; //эт класс у меня такой. Кстати стоит(нужно?) ли делать переменную такого класса ссылкой, т.е. build_index^ ind.
//далее, собственно идет цикл, примерно такого содержания
while ((i<=10) && (b == false)){
bool b = ind.build(i);
this->label->Text = "для " + i.ToString() + " нечто уже поделано";
i = i + 1;
};
терь, что пишут в MSDN:

ThreadStart^ threadDelegate = gcnew ThreadStart( MyVar, &MyClass::MyProc );
Thread^ newThread = gcnew Thread( threadDelegate );

Вопрос: как сопоставить "у меня" и "в MSDN". Просидел черт знает скока времени, да ниче не вышло. Если бы моя функция была void, да без параметров - то все вродь и проходит, ток хотелось бы подделать под вариант "у меня".
...
Рейтинг: 0 / 0
Как пользоваться таймером?
    #34522191
Baikaly
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А если сделать так:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
MSG message;
build_index ind; //эт класс у меня такой. Кстати стоит(нужно?) ли делать переменную такого класса ссылкой, т.е. build_index^ ind.
//далее, собственно идет цикл, примерно такого содержания
while ((i<= 10 ) && (b == false)){
bool b = ind.build(i);
this->label->Text = "для " + i.ToString() + " нечто уже поделано";
i = i +  1 ;
if (::PeekMessage(&message, NULL,  0 ,  0 , PM_REMOVE))
{
     ::TranslateMessage(&message);
     ::DispatchMessage(&message);
}
};
Сообщение вроде должно появляться на форме.
...
Рейтинг: 0 / 0
4 сообщений из 4, страница 1 из 1
Форумы / C++ [игнор отключен] [закрыт для гостей] / Как пользоваться таймером?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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