Форум: "Основная";
Текущий архив: 2005.01.23;
Скачать: [xml.tar.bz2];
ВнизПоток и обработка процедуры Найти похожие ветки
← →
Sun bittern © (2005-01-05 20:51) [0]Доброго вечера всем!
Вопрос больше теоритический.
Например есть некий поток. Ему в конструктор в качестве параметра передается:
type
TMyProcedure = procedure(...);
Create(..., MyProcedure: TMyProcedure);
Далее поток выполняет свой код, и допустим, я захотел его на время усыпить:
procedure TMyThread.Execute;
begin
...
MyProcedure
{
Может ли поток уснуть тут?
}
...
end;
Поясню: может ли существовать момент времени, что при попытке усыпить поток, он может остановить обработку кода внутри тела MyProcedure? Или поток сначала завершит обработку MyProcedure, а затем уснет?
Вобшем суть задумки: как в Total Commander при копировании файлов информация выводится на одну форму. Если ему сказать копировать в фоновом режиме, то результат уже выходит на другой форме.
Хочу чего-то подобное схимичить.
← →
Sun bittern © (2005-01-05 21:06) [1]Или лучше может сделать так?
Для TThread создать дополнительный метод и свойство, сообщающие о том, что поток хотят усыписть.
А далее:
procedure TMyThread.Execute;
begin
...
MyProcedure
...
if MySuspend then {поток усыпит сам себя}
end;
← →
Alexander Panov © (2005-01-05 21:32) [2]Во время выполнения кода в процедуре Execute ты в любой момент можешь усыпить поток. Соответственно, поток останвит свое выполнение сразу после выполнения Suspend.
← →
GuAV © (2005-01-05 22:28) [3]Sun bittern © (05.01.05 20:51)
Вобшем суть задумки: как в Total Commander при копировании файлов информация выводится на одну форму. Если ему сказать копировать в фоновом режиме, то результат уже выходит на другой форме.
Хочу чего-то подобное схимичить.
Меня этот вопрос тоже когда-то заинтересовал. Оказывается, окно фонового копирования - не VCL.
← →
KSergey © (2005-01-06 09:04) [4]Я не понял зачем кого-то усыплять? Может я просто не видел Total Commander? ;)
Если есть задача подменять вывод - то я бы сделал копирование всегда в потоке, а ему бы выставлял флаг (ну или как-то там еще, много чего наворотить можно) куда выводить информацию о процессе...
Зачем кого-то усыплять - я так и не понял...
← →
Sun bittern © (2005-01-06 18:11) [5]KSergey © (06.01.05 09:04) [4]
Усыплять - дать возможность преостановить некий процесс обработки данных, если есть необходимость. Ну и задача - подменить вывод информации если надо. Всетаки штука получается многопоточная, хрен его знает, лучше не рисковать. Наверно всетаки лучше усыплять его в нужное время и в нужном месте.
Вобшем кодить начнем, если не пойдет, то спросим :)
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2005.01.23;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.036 c