Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Как запустить дополнительный поток в программе.

30K
18 мая 2009 года
asmel
50 / / 05.03.2009
Проблема: из UnitMain запускается программа обработки большого количества файлов, после обработки некоторого количества файлов UnitMain зависает и программа теряет управление. В ходе обсуждения проблемы в форуме выяснилось, что необходимо создать отдельный поток, который будет работать с файлами и управляться из UnitMain.
Было сделано - File->New->Other... -> Thread object. К программе добавилась Unit1.cpp с функцией Execute(), в этот модуль я перенес программу обработки файлов, откомпилировалось все без ошибок.
Вопрос: как мне из UnitMain запустить этот новый поток по обработке файлов.
По теме проработал массу материалов, но безрезультатно. Одна надежда на помощь форума.
_____________________
"Котам нельзя! С котами нельзя! Брысь! Слезай, а то милицию позову!"© М. Булгаков. Мастер и маргарита
602
19 мая 2009 года
KPI Student
265 / / 16.12.2006
О господи... А ведь сам был таким же...

Что вы сделали? Вы описали класс потока, так? Что-то типа class CNewThread. Что вы сделали далее? Вы написали функцию класса Execute(), которая делает что-то полезное. Теперь вы не знаете, как создать экземпляр [класса] нового потока и "сделать что-то полезное"?

Только имейте ввиду, что если будете работать с интерфейсом (например c ProgressBar-ом) из этого потока без синхронизации, то будет авария. Смотреть в сторону Synchronize(...).

З.Ы. Все vcl-компоненты создаются с помощью new
30K
19 мая 2009 года
asmel
50 / / 05.03.2009
KPI Student
Цитата:
Теперь вы не знаете, как создать экземпляр [класса] нового потока и "сделать что-то полезное"?


Да, к сожалению, не знаю.

1
19 мая 2009 года
kot_
7.3K / / 20.01.2000
Цитата: asmel
KPI Student

Да, к сожалению, не знаю.


Ну в принципе KPI Student все описал. При добавлении объекта потока вам выдало диалоговое окно в котором надо было указать имя класса потока (и если нужно создать именованный поток - то соотвественно имя для него). Соотвественно в UnitMain нужно подключить заголовочный файл с калссом потока и

 
Код:
TMyThread *SecondThread = new TMyThread(true);
NewTread->Resume();
30K
20 мая 2009 года
asmel
50 / / 05.03.2009
kot_ Спасибо!
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог