Модераторы: feodorv, GremlinProg, xvr, Fixin
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> дождаться завершение функции 
:(
    Опции темы
ytrewq
Дата 12.7.2008, 14:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 25
Регистрация: 16.10.2006

Репутация: нет
Всего: нет



Здрасти, у меня такой вопрос

есть две фнукции:

1 одна, копирует с одной папки в другую
2 вторая, запускает приложения с папки которая скпировалась

как дождаться , что функция копирования выполнилась, а то вторая функция запускает фаил, который еще не скопировался?
Можно конечно поствавить задержку между операциями, тогда нормально

если можно простой пример реализации
PM MAIL   Вверх
Evjeny
Дата 12.7.2008, 14:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 88
Регистрация: 14.8.2006

Репутация: нет
Всего: 5



Сделай два потока и синхронизируй их. В первом потоке будет выполняться функция копирования, во втором функция запуска.
PM MAIL WWW   Вверх
Draeden
Дата 12.7.2008, 14:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 22
Регистрация: 7.7.2008

Репутация: нет
Всего: нет



Почитай документацию к "событиям": функции CreateEvent и др.

Есть как минимум три варианта:

1. Программа копирующая файл ( программа A ) создаёт событие с определённым именем в несигнальном состоянии через CreateEvent ( ...EventName... ), после чего копирует файл и переводит это событие в сигнальное состояние через SetEvent. Программа запускающая файл ( программа B ) открывает событие по имени ( оно заранее известно ) через OpenEvent ( ...EventName... ), затем переходит в состояние ожидания через WaitForSingleObject. Функция WaitForSingleObject вернёт управление как только событие ( которое оно ждёт ) перейдёт в сигнальное состояние, а оно перейдёт в это состояние после вызова функции SetEvent программой A. Дождавшись события, функция запускает файл.

2. Программа A копирует файл, а программа B создаёт дополнительный поток через CreateThread который тупо в цикле проверяет наличие нужного файла.

3. Смотри MSDN к FindFirstChangeNotification/FindNextChangeNotification.
PM MAIL   Вверх
ytrewq
Дата 12.7.2008, 15:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 25
Регистрация: 16.10.2006

Репутация: нет
Всего: нет



Цитата(Draeden @  12.7.2008,  14:57 Найти цитируемый пост)
. Программа копирующая файл ( программа A ) создаёт событие с определённым именем в несигнальном состоянии через CreateEvent ( ...EventName... ), после чего копирует файл и переводит это событие в сигнальное состояние через SetEvent. Программа запускающая файл ( программа B ) открывает событие по имени ( оно заранее известно ) через OpenEvent ( ...EventName... ), затем переходит в состояние ожидания через WaitForSingleObject. Функция WaitForSingleObject вернёт управление как только событие ( которое оно ждёт ) перейдёт в сигнальное состояние, а оно перейдёт в это состояние после вызова функции SetEvent программой A. Дождавшись события, функция запускает файл.


а можно пример


Цитата(Draeden @  12.7.2008,  14:57 Найти цитируемый пост)
Программа A копирует файл, а программа B создаёт дополнительный поток через CreateThread который тупо в цикле проверяет наличие нужного файла.


нужно чтоб весь каталог полностью скопировался, а не фаил 



Цитата(Draeden @  12.7.2008,  14:57 Найти цитируемый пост)
Смотри MSDN к FindFirstChangeNotification/FindNextChangeNotification. 


я посмотрел пример в MSDN , там передается каталог и проверяется есть ли он или нет, а как передать конкретно функцию smile 


у меня щас так сделано:

Код

h=CreateEvent(0, true, false, "et");
WaitForSingleObject(h,20000);

PM MAIL   Вверх
jonie
Дата 13.7.2008, 02:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 5613
Регистрация: 21.8.2005
Где: Владимир

Репутация: 7
Всего: 118



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


--------------------
Что-то не поняли? -> Напейтесь до зеленых человечков... эта сверхцивилизация Вам поможет...
PM MAIL Jabber   Вверх
ytrewq
Дата 13.7.2008, 08:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 25
Регистрация: 16.10.2006

Репутация: нет
Всего: нет



Цитата(jonie @  13.7.2008,  02:15 Найти цитируемый пост)
у вас несколько потоков чтоли?


щас у меня нет вообще потоков, функции выполняются последовательно, просто задержка между ними
PM MAIL   Вверх
jonie
Дата 13.7.2008, 10:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 5613
Регистрация: 21.8.2005
Где: Владимир

Репутация: 7
Всего: 118



а зачем задержка?


--------------------
Что-то не поняли? -> Напейтесь до зеленых человечков... эта сверхцивилизация Вам поможет...
PM MAIL Jabber   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Системное программирование и WinAPI"
Fixin
GremlinProg
xvr
feodorv
  • Большое количество информации и примеров с использованием функций WinAPI можно найти в MSDN
  • Описание сообщений, уведомлений и примеров с использованием компонент WinAPI (BUTTON, EDIT, STATIC, и т.п.), можно найти в MSDN Control Library
  • Непосредственно, перед созданием новой темы, проверьте заголовок и удостоверьтесь, что он отражает суть обсуждения.
  • После заполнения поля "Название темы", обратите внимание на наличие и содержание панели "А здесь смотрели?", возможно Ваш вопрос уже был решен.
  • Приводите часть кода, в которой предположительно находится проблема или ошибка.
  • Если указываете код, пользуйтесь тегами [code][/code], или их кнопочными аналогами.
  • Если вопрос решен, воспользуйтесь соответствующей ссылкой, расположенной напротив названия темы.
  • Один топик - один вопрос!
  • Перед тем как создать тему - прочтите это .

На данный раздел распространяются Правила форума и Правила раздела С++:Общие вопросы .


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Chipset, Step, Fixin, GremlinProg, xvr. feodorv.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Системное программирование и WinAPI | Следующая тема »


 




[ Время генерации скрипта: 0.0446 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.