Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.01.23;
Скачать: CL | DM;

Вниз

Поток и обработка процедуры   Найти похожие ветки 

 
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;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.028 c
1-1105451656
Quiii
2005-01-11 16:54
2005.01.23
kak zakrit formu esli v forme onclose zapisano - action:=caNone;


1-1105269948
glGLU
2005-01-09 14:25
2005.01.23
Как поделить float


1-1104743119
TeNY
2005-01-03 12:05
2005.01.23
Полезная програ для работы в Delhpi Easy Bufer v1.01


3-1103359735
Dell3r
2004-12-18 11:48
2005.01.23
Печать


1-1105446345
Viruz
2005-01-11 15:25
2005.01.23
Exception