Главная страница
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.049 c
1-1104904307
rus9
2005-01-05 08:51
2005.01.23
Excel


14-1105092511
Empleado
2005-01-07 13:08
2005.01.23
Спасибо Королевству


11-1085817453
Майк_110
2004-05-29 11:57
2005.01.23
ListView, lvoCheckboxes, lvoOwnerData - проблемка


1-1105448024
Леха
2005-01-11 15:53
2005.01.23
Как создать класс с ссылками на классы другие


3-1103439966
Black
2004-12-19 10:06
2005.01.23
Пользаватели в SQL Server 2000