Как организовать копирование нескольких файлов одновременно?

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
Floyd
Новичок
Новичок
 
Сообщения: 45
Зарегистрирован: 23.04.2009 (Чт) 10:50

Как организовать копирование нескольких файлов одновременно?

Сообщение Floyd » 28.04.2011 (Чт) 15:43

Привет.
нужно реализовать в vb6 параллельное копирование нескольких файлов, с фидбеком процента скопированного.
в данный момент юзаю copyFileEx, но он "вешает" приложение на время копирования файла...
Подскажите, что можно посмтореть?

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Re: Как организовать копирование нескольких файлов одновреме

Сообщение alibek » 28.04.2011 (Чт) 16:03

У этой функции третьим аргументом идет LPPROGRESS_ROUTINE lpProgressRoutine.
Не задумывался, что он означает?
Lasciate ogni speranza, voi ch'entrate.

Floyd
Новичок
Новичок
 
Сообщения: 45
Зарегистрирован: 23.04.2009 (Чт) 10:50

Re: Как организовать копирование нескольких файлов одновреме

Сообщение Floyd » 28.04.2011 (Чт) 16:09

alibek писал(а):У этой функции третьим аргументом идет LPPROGRESS_ROUTINE lpProgressRoutine.
Не задумывался, что он означает?

я его использую. моя главная задача параллельно копирование нескольких.
один за одним реализовано во всей красе.

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Re: Как организовать копирование нескольких файлов одновреме

Сообщение Хакер » 28.04.2011 (Чт) 16:44

Floyd писал(а):я его использую. моя главная задача параллельно копирование нескольких.

Если устройства source и target для каждого файла из группы параллельно копируемых файлов — одинаковые (между файлами, а не между собой), то такое копирование ничего хорошего не принесёт.

Ты уверен, что тебе действительно нужно параллельное копирование?

Если да, то запусти copyFileEx отдельно в каждом потоке.
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

Floyd
Новичок
Новичок
 
Сообщения: 45
Зарегистрирован: 23.04.2009 (Чт) 10:50

Re: Как организовать копирование нескольких файлов одновреме

Сообщение Floyd » 28.04.2011 (Чт) 16:49

Хакер писал(а):Ты уверен, что тебе действительно нужно параллельное копирование?
Если да, то запусти copyFileEx отдельно в каждом потоке.

да, нужно. подскажите пожалуйста как реализовываются треды на vb6?

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Re: Как организовать копирование нескольких файлов одновреме

Сообщение Хакер » 28.04.2011 (Чт) 17:54

Floyd писал(а):да, нужно.

Походе на отговорку.
Ты свидетельствуешь, что у тебя тот редкий случай, когда первый файл копируется с C на D, а второй — с E на G?
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

Floyd
Новичок
Новичок
 
Сообщения: 45
Зарегистрирован: 23.04.2009 (Чт) 10:50

Re: Как организовать копирование нескольких файлов одновреме

Сообщение Floyd » 28.04.2011 (Чт) 19:09

Хакер писал(а):с C на D, а второй — с E на G?

Извини, возможно не понял, нет, все файлы с локального диска из определенной папки
улетают в определенную папку на другой комп в сети.
я ищу возможность "не подвешивания" программы на время копирования файла.
программа занимается проверкой файла по определнным параметрам,
в случае соответствия - копирует.

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Re: Как организовать копирование нескольких файлов одновреме

Сообщение Хакер » 28.04.2011 (Чт) 19:12

Ты уж определись, речь идёт о ситуации, на языке безграмотных называемой «не подвешиванием», или о параллельном (в противоположность последовательному) копировании нескольких файлов.

Определишься — напиши.
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

Twister
Теоретик
Теоретик
Аватара пользователя
 
Сообщения: 2251
Зарегистрирован: 28.06.2005 (Вт) 12:32
Откуда: Алматы

Re: Как организовать копирование нескольких файлов одновреме

Сообщение Twister » 29.04.2011 (Пт) 8:14

Ни CopyFileEx, ни SHFileOperation не поддерживают ассинхронное копирование. И это правильно. Так что для параллельного копирования тебе поможет лишь многопоточность. Геморроиться ли с ней на VB или выбрать предназначенный для этого язык - решать тебе.
А я все практикую лечение травами...

Mikle
Изобретатель велосипедов
Изобретатель велосипедов
Аватара пользователя
 
Сообщения: 4148
Зарегистрирован: 25.03.2003 (Вт) 14:02
Откуда: Туапсе

Re: Как организовать копирование нескольких файлов одновреме

Сообщение Mikle » 29.04.2011 (Пт) 13:27

Самый простой вариант запустить на vb6 копирование в несколько потоков - это сделать отдельный EXE-файл, который принимает имя файла и путь копирования параметрами командной строки и копирует, вызывать его необходимое число раз с помощью Shell, но возникнут трудности с отображением прогресса копирования.

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Re: Как организовать копирование нескольких файлов одновреме

Сообщение Хакер » 29.04.2011 (Пт) 13:29

Вызвать CopyFileEx в чужом потоке нет никакой проблемы. Это вам не полпрограммы в отдельном потоке.
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

Floyd
Новичок
Новичок
 
Сообщения: 45
Зарегистрирован: 23.04.2009 (Чт) 10:50

Re: Как организовать копирование нескольких файлов одновреме

Сообщение Floyd » 29.04.2011 (Пт) 13:37

подскажете как реализовать?

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Re: Как организовать копирование нескольких файлов одновреме

Сообщение Хакер » 29.04.2011 (Пт) 13:39

Написать код, вызывающий CopyFileEx, оформив его в функцию. Вызвать этот код с помощью CreateThread.
Код должен быть аскетичен, CopyFileEx должна быть объявлена в TLB.
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

Floyd
Новичок
Новичок
 
Сообщения: 45
Зарегистрирован: 23.04.2009 (Чт) 10:50

Re: Как организовать копирование нескольких файлов одновреме

Сообщение Floyd » 29.04.2011 (Пт) 14:01

ок. спасибо, попробую.

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Re: Как организовать копирование нескольких файлов одновреме

Сообщение alibek » 29.04.2011 (Пт) 15:38

Хакер писал(а):Код должен быть аскетичен, CopyFileEx должна быть объявлена в TLB.

В этом коде должен быть индикатор прогресса и, возможно, обработка отмены операции.
Lasciate ogni speranza, voi ch'entrate.

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Re: Как организовать копирование нескольких файлов одновреме

Сообщение Хакер » 29.04.2011 (Пт) 17:45

alibek писал(а):В этом коде должен быть индикатор прогресса и, возможно, обработка отмены операции.

Не должен, а может.
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: AhrefsBot и гости: 86

    TopList