Как сделать, что бы можно было прервать выполнение цикла в программе:
for (long i=0; i<100000000; i++)
{
// DoSomething();
}
нажатием на кнопку?
При таком подходе приложение не будет реагировать на поступающие от системы сообщения, пока не завершиться цикл.
Для того что бы приложение могло обрабатывать сообщения необходимо вызывать метод TApplication::ProcessMessages(); таким образом пользователь сможет нажать на кнопку "Стоп" в обработчике которой нужно изменить состояние флага на выход из цикла:
bool stop_flag = false;
void __fastcall TForm1::StopButtonClick (TObject *Sener)
{
stop_flag = true;
}
//---------------------------------------------------
void MyFunc (void)
{
for (long i=0; i<100000000; i++)
{
// DoSomething();
Application->ProcessMessages();
if (stop_flag) break;
}
}