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

Вниз

Поток   Найти похожие ветки 

 
karburator   (2003-11-03 13:02) [0]

Почему при копировании большого файла функцией CopyFileTo, находящейся в главном потоке, до окончания копирования не хочет работать вторичный поток

Код :
---------
FileProbiv.Suspended:= false; // FileProbiv - вторичный поток
CopyFileTo("C:\test\del.DRW" ,"C:\test\del.Del"); // del.DRW = 160 mb
// Теперь поток FileProbiv начинает работать
---------


 
Digitman ©   (2003-11-03 13:09) [1]


> функцией CopyFileTo, находящейся в главном потоке


ф-ция может быть вызвана в некоем потоке и в нем же
исполняться

но ф-ция не может "находиться" в каком-то там потоке, будь то главный или иной


 
Narayan ©   (2003-11-03 13:27) [2]

> не хочет работать вторичный поток
оперативной памяти надо добавить


 
karburator   (2003-11-03 13:32) [3]

Ну хорошо - вызвана :)


 
clickmaker ©   (2003-11-03 13:49) [4]

А что делает FileProbiv ?


 
Геннадий ©   (2003-11-03 16:06) [5]

Потоки на то и потоки, что выполняются параллельно. Ты что-то путаешь.


 
Karburator   (2003-11-03 20:08) [6]

> оперативной памяти надо добавить
- у меня 256мб - помоему должно хватать
--------------
> А что делает FileProbiv ?
А в потоке FileProbiv, выводится сообщение о копировании файла в главном потоке до конца его копирования.
Только вот запускаю вторичный поток я перед копированием, а начинает он работать после того, как файл полностью откопируется. Абсурд
---------------
> Потоки на то и потоки, что выполняются параллельно.
- И я так думаю - паралельно ( \\ или // или || или даже = ) :))


 
Narayan ©   (2003-11-03 22:26) [7]

у меня 256мб - помоему должно хватать
=))

Может наоборот попробушешь?
Сообщения выводить в основном, а копировать в другом.
Не думал о таком варианте?


 
karburator   (2003-11-04 05:15) [8]

Почему при копировании большого файла функцией CopyFileTo, находящейся в главном потоке, до окончания копирования не хочет работать вторичный поток

Код потока (для наглядности упростил, но глюк тот же самый):
----------
procedure TFileProbiv.Execute;
begin
while true do
begin
showmessage("Начинаю работать!");
Suspended:= true;
end;
end;
------------

Код в главном потоке:
---------
FileProbiv.Suspended:= false; // FileProbiv - вторичный поток
CopyFileTo("C:\test\del.DRW" ,"C:\test\del.Del"); // del.DRW = 160 mb
// Теперь поток FileProbiv начинает работать
---------

FileProbiv - объявлен в основном потоке как глобальная переменная


 
karburator   (2003-11-04 05:17) [9]

-> Сообщения выводить в основном, а копировать в другом.
Не думал о таком варианте?

<Блин, не думал. Сейчас попробую
Как грится - У каждой медали две стороны и ТАРЕЦ


 
Думкин ©   (2003-11-04 05:23) [10]

Почитать о потоках и VCL.
Недавно тут пробегало.

И конечно - сам подход - кривой. Через обратно.


 
karburator   (2003-11-04 08:19) [11]

Настоящие герои всегда идут в обход. При контроле копирования в главном потоке, а копировании ф-ла во вторичном все прошло как планировалось. Ну тогда так и оставлю. Но чистА из принципа всё равно хотелось бы узнать почему... (см. выше)


 
karburator   (2003-11-04 08:24) [12]

Думкин
>Почитать о потоках и VCL.
>Недавно тут пробегало.
>И конечно - сам подход - кривой. Через обратно
=============

Где кривой подход - у меня в программе или в потоках и VCL?
Если у меня, то как будет не криво?


 
Bel ©   (2003-11-04 09:03) [13]

> karburator (04.11.03 08:24) [12]
> Где кривой подход?

Раз уж ты не хочешь читать книжки, вкратце скажу основную идею, о которой пишут в каждой книжке: Обычно в доп. поток выносят длительные операции, связанные только с обработкой данных, а не с их визуализацией. Визуализацией занимается основной поток.



Страницы: 1 вся ветка

Текущий архив: 2003.11.13;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.037 c
14-41978
Карлсон
2003-10-17 22:27
2003.11.13
вот есть гомофобы, а как называются ненавидящие курящих?


14-41917
Думкин
2003-10-21 04:27
2003.11.13
С днем рождения! 21 октября.


3-40855
Gia Gvatua
2003-10-21 08:48
2003.11.13
Problems with Paradox tables


1-41559
d_oleg
2003-10-27 18:00
2003.11.13
определить путь в каталог пользователя под win200/XP


1-41171
Mishenka
2003-11-02 17:51
2003.11.13
Как при создании исключения передать код ошибки?