Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.71/21: Рейтинг темы: голосов - 21, средняя оценка - 4.71
Почемучка)
 Аватар для Ddv122
1244 / 304 / 30
Регистрация: 23.12.2010
Сообщений: 2,001
Записей в блоге: 1

Ожидание завершения потока

19.02.2013, 23:38. Показов 4276. Ответов 25
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Доброго вечера.
Подскажите...то я что то сам не разобрался...
Как подождать завершения потока...

C++
1
2
3
4
5
6
7
8
//  if (поток завершен) {
        OSCAM1Click(0);  // жмяк
    }
  // else (ждем завершения потока)
    {
        N2Click(0);   //и жмякаем на кнопку 
       
    }
Так запускаю поток

C++
1
2
 MyThread1 = new TMyThread(true);
        MyThread1->Resume();
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
19.02.2013, 23:38
Ответы с готовыми решениями:

Ожидание завершения процесса
Как дождаться завершения процесса и выполнить команду ?

Ожидание завершения процесса
Как дождаться завершения процесса и выполнить команду ?

Ожидание завершения процесса
Привет, есть путь к файлу, есть файл, после запуска файл выполняет действия и закрывается. Задача: Отследить состояние файла по пути,...

25
 Аватар для gumi250
435 / 402 / 57
Регистрация: 06.02.2012
Сообщений: 1,384
20.02.2013, 00:03
А зачем тогда нужен отдельный поток? С таким же успехом можно сделать все в основном потоке.

Добавлено через 10 минут
WaitForSingleObject
0
Почемучка)
 Аватар для Ddv122
1244 / 304 / 30
Регистрация: 23.12.2010
Сообщений: 2,001
Записей в блоге: 1
20.02.2013, 00:05  [ТС]
gumi250,
Цитата Сообщение от gumi250 Посмотреть сообщение
сделать все в основном потоке.
программа получает ссылку на файл (парсит страницу и скачивает файл), и если в основном потоке...то программа повисает на 3 секунды...
0
Эксперт С++
 Аватар для Avazart
8488 / 6155 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
20.02.2013, 00:07
Цитата Сообщение от gumi250 Посмотреть сообщение
С таким же успехом можно сделать все в основном потоке.
Цитата Сообщение от Ddv122 Посмотреть сообщение
... если в основном потоке...то программа повисает на 3 секунды...
Ты сам сказал подождать... Зачем создавать поток потом еще его и ждать ?
0
Почемучка)
 Аватар для Ddv122
1244 / 304 / 30
Регистрация: 23.12.2010
Сообщений: 2,001
Записей в блоге: 1
20.02.2013, 00:11  [ТС]
Avazart, ну мне нужно подождать покуда в потоке скачает файл, а потом уже
нажать на кнопку
C++
1
OSCAM1Click(0);
0
 Аватар для gumi250
435 / 402 / 57
Регистрация: 06.02.2012
Сообщений: 1,384
20.02.2013, 00:14
Если основной поток будет ждать дочерний поток, то основной поток будет висеть. В чем смысл?
0
Почемучка)
 Аватар для Ddv122
1244 / 304 / 30
Регистрация: 23.12.2010
Сообщений: 2,001
Записей в блоге: 1
20.02.2013, 00:23  [ТС]
Цитата Сообщение от Ddv122 Посмотреть сообщение
// *if (поток завершен) {
* * * * OSCAM1Click(0); *// жмяк
* * }
* // else (ждем завершения потока)
* * {
* * * * N2Click(0); * //и жмякаем на кнопку
}
просто этот код выполняется с трея и как бы не требует участие пользователя...
нужно сначала скачать файл, а потом программа его обработает...
Файл у меня скачивается в другом потоке т.к во время работы не с треем а в программе, что бы не было подвисания...
и изначально не нужно нажимать на
C++
1
OSCAM1Click(0); *// жмяк
0
Эксперт С++
 Аватар для Avazart
8488 / 6155 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
20.02.2013, 00:44
Из потока -
C++
1
Synchronyze(& SomeThreadMethod  );
А в методе
C++
1
OSCAM1Click(0);
1
Почемучка)
 Аватар для Ddv122
1244 / 304 / 30
Регистрация: 23.12.2010
Сообщений: 2,001
Записей в блоге: 1
20.02.2013, 00:57  [ТС]
Цитата Сообщение от Ddv122 Посмотреть сообщение
изначально не нужно нажимать на
Чёт я запутался
если я выполню

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
void __fastcall TMyThread::SomeThreadMethod()
{
    Form1->OSCAM1Click(0);
}
 
__fastcall TMyThread::TMyThread(bool CreateSuspended)
    : TThread(CreateSuspended)
{
    FreeOnTerminate =true;
}
 
void __fastcall TMyThread::Execute()
{
//бла бла бла
    Synchronize(&SomeThreadMethod);
}
 
void __fastcall TForm1::N2Click(TObject *Sender)
{
 
        MyThread1 = new TMyThread(true);
        MyThread1->Resume();
}
то всегда будет нажиматься
C++
1
OSCAM1Click(0);
в мне нужно только когда с трея...
0
Эксперт С++
 Аватар для Avazart
8488 / 6155 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
20.02.2013, 01:00
C++
1
2
3
4
void __fastcall TMyThread::SomeThreadMethod()
{
   if( Form1->UseFromTray == true )  Form1->OSCAM1Click(0);
}
1
Почемучка)
 Аватар для Ddv122
1244 / 304 / 30
Регистрация: 23.12.2010
Сообщений: 2,001
Записей в блоге: 1
20.02.2013, 01:25  [ТС]
Avazart, чёт я протупил не работает у меня.Может подскажите где ошибка?
C++
1
BOOL clc=False;
на кнопке в трее

C++
1
2
3
4
5
void __fastcall TForm1::Oscam2Click(TObject *Sender)
{
   clc=True;
   N2Click(0);   //начинает поток
}
и в синхронизации

C++
1
2
3
4
5
6
void __fastcall TMyThread::SomeThreadMethod()
{
 
 
    if(  clc==true )  Form1->OSCAM1Click(0);
}
0
 Аватар для gumi250
435 / 402 / 57
Регистрация: 06.02.2012
Сообщений: 1,384
20.02.2013, 01:33
Вот как, из вашего кусочка кода можно подсказать где у вас какая то ошибка?
0
Почемучка)
 Аватар для Ddv122
1244 / 304 / 30
Регистрация: 23.12.2010
Сообщений: 2,001
Записей в блоге: 1
20.02.2013, 01:39  [ТС]
я имею ввиду клик на OSCAM1Click ( 0 ) ; не происходит...
0
 Аватар для gumi250
435 / 402 / 57
Регистрация: 06.02.2012
Сообщений: 1,384
20.02.2013, 01:57
Ну сам подумай, это может быть если clc==false, ну как такое может быть если вы ранее присвоили ему true?
1
Почемучка)
 Аватар для Ddv122
1244 / 304 / 30
Регистрация: 23.12.2010
Сообщений: 2,001
Записей в блоге: 1
20.02.2013, 01:59  [ТС]
gumi250, я понимаю, но в итоге оно False
0
 Аватар для gumi250
435 / 402 / 57
Регистрация: 06.02.2012
Сообщений: 1,384
20.02.2013, 02:03
Найди кто его меняет.
1
Почемучка)
 Аватар для Ddv122
1244 / 304 / 30
Регистрация: 23.12.2010
Сообщений: 2,001
Записей в блоге: 1
20.02.2013, 02:08  [ТС]
Всем спасибо
нашел свой косяк .
наверно тупа, но я в H файле объявлял переменную
C++
1
BOOL clc=False;
что бы была видна всем остальным формам.
А нужно было
в cpp объявить
C++
1
BOOL clc=False;
а на другой форме
C++
1
extern BOOL clc;
И все стало на свои места
0
Эксперт С++
 Аватар для Avazart
8488 / 6155 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
20.02.2013, 02:10
По мойму из моего кода ясно было что можно её сделать членом класса формы, а не "висячей" переменной (глобальной)
И почему BOOL ? чем bool не угодил ?
0
Почемучка)
 Аватар для Ddv122
1244 / 304 / 30
Регистрация: 23.12.2010
Сообщений: 2,001
Записей в блоге: 1
20.02.2013, 02:21  [ТС]
Не сердчайте, я же учусь
В колледже нам не чего не рассказывали и не объясняли, все приходится самому...
Мы только определения учили, а практики 0...
А на счет BOOL это builder подсказал, когда я bool писал, я спорить с ним и не стал...
0
 Аватар для gumi250
435 / 402 / 57
Регистрация: 06.02.2012
Сообщений: 1,384
20.02.2013, 02:33
Avazart, а есть разница между BOOL и bool? А между TRUE и true, FALSE и false?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
20.02.2013, 02:33
Помогаю со студенческими работами здесь

Запуск приложения и ожидание его завершения
Имеется приложение ( консольное, не требует каких-либо действий от пользователя и завершается автоматически). Требуется: Запустить,...

Дождаться завершения потока
Как заставить это дожидаться завершения потока перед тем как продолжить? for ((i = 0); i < qwe; i++) { url = "blablabla; ...

Дождаться завершения потока TThread
Есть поток TThread под названием autoupdate и я зщ как после его вызова дождатся его завершения и продолжнить работу. Например в кнопке в...

Как дождаться завершения потока в событии FormClose
Manual *man; __fastcall Manual::Manual(bool CreateSuspended) : TThread(CreateSuspended) { FreeOnTerminate = true; } void...

Ожидание завершения потока
Всем привет. В цикле создаю и запускаю N потоков. Интересует как сделать чтобы главный поток ожидал завершения всех этих потоков, после...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Автозаполнение реквизита при выборе элемента справочника
Maks 27.03.2026
Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. При выборе "Спецтехники" (Тип Справочник. Спецтехника), заполняется. . .
Сумматор с применением элементов трёх состояний.
Hrethgir 26.03.2026
Тут. https:/ / fips. ru/ EGD/ ab3c85c8-836d-4866-871b-c2f0c5d77fbc Первый документ красиво выглядит, но без схемы. Это конечно не даёт никаких плюсов автору, но тем не менее. . . всё может быть. . .
Автозаполнение реквизитов при создании документа
Maks 26.03.2026
Программный код из решения ниже размещается в модуле объекта документа, в процедуре "ПриСозданииНаСервере". Алгоритм проверки заполнения реализован для исключения перезаписи значения реквизита,. . .
Команды формы и диалоговое окно
Maks 26.03.2026
1. Команда формы "ЗаполнитьЗапчасти". Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. В качестве источника данных. . .
Кому нужен AOT?
DevAlt 26.03.2026
Решил сделать простой ланчер Написал заготовку: dotnet new console --aot -o UrlHandler var items = args. Split(":"); var tag = items; var id = items; var executable = args;. . .
Отправка уведомления на почту при изменении наименования справочника
Maks 24.03.2026
Программная отправка письма электронной почты на примере изменения наименования типового справочника "Склады" в конфигурации БП3. Перед реализацией необходимо выполнить настройку системной учетной. . .
модель ЗдравоСохранения 5. Меньше увольнений- больше дохода!
anaschu 24.03.2026
Теперь система здравосохранения уменьшает количество увольнений. 9TO2GP2bpX4 a42b81fb172ffc12ca589c7898261ccb/ https:/ / rutube. ru/ video/ a42b81fb172ffc12ca589c7898261ccb/ Слева синяя линия -. . .
Midnight Chicago Blues
kumehtar 24.03.2026
Такой Midnight Chicago Blues, знаешь?. . Когда вечерние улицы становятся ночными, а ты не можешь уснуть. Ты идёшь в любимый старый бар, и бармен наливает тебе виски. Ты смотришь на пролетающие. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru