Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 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.46 MB
Время: 0.049 c
1-1105102241
If...than
2005-01-07 15:50
2005.01.23
Не сохраняет документы!


1-1105609595
Игорь нтк
2005-01-13 12:46
2005.01.23
DB Radiogroup


14-1104765928
Piter
2005-01-03 18:25
2005.01.23
Быстрый способ вырезать строку


4-1101999562
Priest
2004-12-02 17:59
2005.01.23
Остановка дочернего потока


1-1105385578
Anonimus
2005-01-10 22:32
2005.01.23
Вопрос по TListView





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский