Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.53/15: Рейтинг темы: голосов - 15, средняя оценка - 4.53
7 / 7 / 2
Регистрация: 16.11.2011
Сообщений: 251

Как по нажатию на кнопку создать новый поток

18.11.2012, 18:47. Показов 3074. Ответов 7
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Мне нужно организовать выход из безконечного цикла. Пока не нажата кнопка №2 выполняется цикл, который запускается кнопкой №1.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
void __fastcall TForm1::Button1Click(TObject *Sender)
 
{
DWORD  WINAPI MyThread (LPVOID lpParameter)    {
 
         int i;
        Edit1->Text="";
        i=rand()% 10+1;
        Edit1->Text=(Edit1->Text+IntToStr(i));   }
 
              {
        HANDLE hThread;
         Boolean stop;
 
 //Application->ProcessMessages();
 
       hThread = CreateThread(NULL, 0, MyThread, (LPVOID)i, 0,NULL);
       if(hThread)
       {
                     stop=true;
        }
 
      }
 
 
 
/*Edit1->Text="";
i=rand()% 10+1;
Edit1->Text=(Edit1->Text+IntToStr(i));      */
  }
//---------------------------------------------------------------------------
 
void __fastcall TForm1::Button2Click(TObject *Sender)
{
stop = false;
}
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
18.11.2012, 18:47
Ответы с готовыми решениями:

Как создать кнопку по нажатию кнопки?
Здравствуйте! Меня интересует как создать новый объект (в нашем случае кнопку) по нажатию другой кнопки? Я создал дополнительный класс и...

Как создать список по нажатию на кнопку в treeView1
помогите кто знает, задам вопрос на прямую... в treeView1 хочу при нажатии на кнопку создать Nodes, с такими параметрами ...

Новый поток по нажатию кнопки и какая-то непонятная ругань отладчика
Приветствую. По нажатию кнопки создается новый фоновый поток, в котором просто инициализируется локальная переменная в 0. Создаю...

7
 Аватар для BRcr
4043 / 2333 / 292
Регистрация: 03.02.2011
Сообщений: 5,066
Записей в блоге: 10
18.11.2012, 19:47
Лучше используй TThread - проще будет работать с объектами VCL(текст эдита менять, к примеру). Обрати внимание на свойство Terminated и метод Synchronize(), все довольно просто.
1
Эксперт С++
 Аватар для Avazart
8484 / 6151 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
18.11.2012, 21:56
Синхронизация нужна...

Кроме TThread можно использовать потоки из Indy
0
7 / 7 / 2
Регистрация: 16.11.2011
Сообщений: 251
18.11.2012, 23:19  [ТС]
Как это все сделать, а то я что то вообще не могу разобраться как создать потоки и как их приобщить к основной программе?
0
Эксперт С++
 Аватар для Avazart
8484 / 6151 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
18.11.2012, 23:50
Смотри Архангельского
как их приобщить к основной программе?
Через Synchronyze()
0
95 / 64 / 5
Регистрация: 03.07.2011
Сообщений: 148
19.11.2012, 11:36
Цитата Сообщение от Slava-hacker32 Посмотреть сообщение
Как это все сделать, а то я что то вообще не могу разобраться как создать потоки и как их приобщить к основной программе?
У Архангельского хорошо об этом написано. Также у Рихтера энциклопедия http://wm-help.net/books-online/book/59464.html обязательна для изучения. Чтобы использовать потоки в Билдере, проще всего делать это посредством специально разработанных именно для Билдер средств, в частности, класса TThread. Выбираешь File->New->Other->Thread object, даешь имя своему классу. В классе будет функция Execute() - ее код и будет исполняться потоком. В общем, это обычный класс и обычная функция, отличие от нормальной функции состоит лишь в том, что она будет параллельно остальным исполняться. Чтобы создать поток, в коде программы (например в обработчике нажатия на кнопку) пишешь :
C++
1
2
3
4
класс потока * переменная = new класс потока (false); //Это создаст поток, но не запустит его
//Здесь что-то делаешь с классом потока - например, инициализируешь какие-то его переменные
//Можно поставить флаг FreeOnTerminate - в этом случае поток сам почистится за собой, читай документацию
переменная->Resume(); //Это запустит поток
1
Почетный модератор
Эксперт С++
 Аватар для SatanaXIII
5851 / 2862 / 392
Регистрация: 01.11.2011
Сообщений: 6,906
27.09.2013, 11:18
Для тех, кто все-таки это прочитает, ошибка:
Цитата Сообщение от andy_111 Посмотреть сообщение
класс потока * переменная = new класс потока (false); //Это создаст поток, но не запустит его
Сигнатура конструктора потока:
C++
1
TThread::TThread(bool CreateSuspended)
где CreateSuspended - флаг запуска потока при его создании, но дословно расшифровывается как "создать приостановленным?". Если указать false, то поток запустится сразу после создания.
0
Волшебник
 Аватар для Rapsod
65 / 64 / 7
Регистрация: 21.11.2009
Сообщений: 319
27.09.2013, 13:29
Цитата Сообщение от Slava-hacker32 Посмотреть сообщение
Как это все сделать, а то я что то вообще не могу разобраться как создать потоки и как их приобщить к основной программе?
Там ничего сложного нет!
Вот набросал проект. Там есть запуск, приостановка, возобновление, синхронизация и выход из потока.
Думаю вы разберетесь
Вложения
Тип файла: rar Потоки (Thread).rar (368.7 Кб, 70 просмотров)
2
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
27.09.2013, 13:29
Помогаю со студенческими работами здесь

На форме создать кнопку и по нажатию на эту кнопку открыть фотографию
Салют всем форумчанам! Помогите мне! Как реализовать следующую задумку - на форме создать кнопку и по нажатию на эту кнопку окрывается...

Как создать новый <select> по нажатию на элемент из выпадающего списка?
У меня есть код &lt;select id=&quot;name&quot; name=&quot;name&quot;&gt; &lt;option value=&quot;-- Марка --&quot;&gt;-- Марка --&lt;/option&gt; &lt;option...

Как создать новый picturebox по нажатию кнопки, который будет иметь параметры существующего?
Не могу разобраться как мне это сделать.

Создать объект по нажатию на кнопку
Столкнулся с проблемой: (доделывая приложения из прошлой темы) разбил все по классам, чтобы было красиво, начал делать класс для работы с 2...

Создать сложный объект по нажатию на кнопку
Здравствуйте почитал темы из интересующего нашел как создать N текстов : for j=1 to N Load Text1(J)... Next j Все работает. У...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net REST сервисы временно не работают, только через Web. Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
Модель сукцессии микоризы
anaschu 24.01.2026
Решили писать научную статью с неким РОманом
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь(не выше 3-го порядка) постоянного тока с элементами R, L, C, k(ключ), U, E, J. Программа находит переходные токи и напряжения на элементах схемы классическим методом(1 и 2 з-ны. . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru