Вниз
Скачать: 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 вся ветка

Скачать: CL | DM;



Память: 0.47 MB
Время: 0.022 c
3-40963
snake1977
2003-10-17 10:09
2003.11.13
генераторы


3-41041
diww
2003-10-14 16:38
2003.11.13
Помогите с запросом


6-41818
Olfi
2003-09-15 12:34
2003.11.13
Как узнать СМТП сервер?


1-41530
alex134
2003-10-27 23:56
2003.11.13
потоки и компонент


3-40945
yaric
2003-10-17 14:47
2003.11.13
Проблема с TADOQuery




   Наверх