Официальный сайт студ.городка НГТУ
Программирование и БД » C++ Builder Help Please!!! 

#1  10.06.06 07:30

C++ Builder Help Please!!!

У меня вот такая ситуация.
При нажатии на кнопку, начинается какое либо действие и программа как бы виснет.
Мне хотнелось бы сделать так, чтобы при нажатии этой кнопки начиналось действие и выполнался нужный процесс. Но. Нужно чтобы прорамма не подвисала, а была возможность нажать во время работы этого процесса на другую кнопку. Например, чтобы остановить первый процесс. Простой пример такой программы: Дефрагментация, Сканирование и т.д.. В этих программах Можно начать дефрагментацию, нажав на одну кнопку, и закончить, нажав на другую кнопку. Вроде выложил всю идею.
Есть вариант с таймером. Но таймер медленно работает.

Offline

#2  10.06.06 08:26

Re: C++ Builder Help Please!!!

RusRusRus написал(а):

Есть вариант с таймером. Но таймер медленно работает.

вариант с таймером в принципе  не верен, делай многопоточную программу

Offline

#3  10.06.06 08:43

Re: C++ Builder Help Please!!!

Kak? и что это такое?

Offline

#4  10.06.06 08:51

Re: C++ Builder Help Please!!!

RusRusRus написал(а):

Kak? и что это такое?

в программе может быть несколько thread'ов(нитей) они живут сами по себе и взаимодействуют сообщениями, вот это тебе и нужно

Offline

#5  10.06.06 09:38

Re: C++ Builder Help Please!!!

Понял. Нашел в книжке. Щас попробую разобраться. Спасибо!!!

Offline

#6  10.06.06 12:39

Re: C++ Builder Help Please!!!

большоое спасибо. я сделал прогу наконец то. Теперь я могу нажать кнопку и закончить процесс, когда он надоедает.

Offline

#7  12.06.06 00:22

Re: C++ Builder Help Please!!!

Как вариант - встраиваешь переменную во все циклы, которая показывает: стоит ли продолжать цикл... А дальше - Application-ProcessMessages(); При нажатии на кнопку переменная меняет значение и циклы перестают срабатывать...

Offline

#8  12.06.06 07:13

Re: C++ Builder Help Please!!!

Да. Спасибо. Это тоже вариант. А вот аварийное завершение этого цикла как сделать? Например:

while(1)
{
Label1->Caption=TimeToStr(Time());
Application->ProcessMessages();
}

Offline

#9  12.06.06 17:57

Re: C++ Builder Help Please!!!

cppzone,
Прикалываешся - такие проблеммы стандартно решаются как раз thread-ами. Которые в винде так же присутствуют ))

RusRusRus написал(а):

Да. Спасибо. Это тоже вариант. А вот аварийное завершение этого цикла как сделать? Например:

while(1)
{
Label1->Caption=TimeToStr(Time());
Application->ProcessMessages();
}

break; ? ))

otaku написал(а):

они живут сами по себе и взаимодействуют сообщениями

Ну не обязательно только сообщениями. У них собственно адрессное пространство одно в одном процессе.

Offline

#10  12.06.06 19:19

Re: C++ Builder Help Please!!!

MadSlayer написал(а):

Ну не обязательно только сообщениями. У них собственно адрессное пространство одно в одном процессе.

тож вариант общения

MadSlayer написал(а):

Которые в винде так же присутствуют ))

я бы даже сказал что они там офигенно хорошо реализованны

Offline

Программирование и БД » C++ Builder Help Please!!! 

ФутЕр:)

© Hostel Web Group, 2002-2025.   Сообщить об ошибке

Сгенерировано за 0.181 сек.
Выполнено 14 запросов.