C++Builder
  Начало   Форум   Помощь Войти Регистрация  
Страниц: [1]   Вниз
  Печать  
Автор Тема: Таймаут для CopyFile()  (Прочитано 6820 раз)
AndyTacker
Участник
**

Сказали спасибо: +0/-0
Offline Offline

Сообщений: 26


« : 27 марта 2012, 23:48:05 »

подскажите пожалуйста как сделать таймаут для функции CopyFile, то есть если файл копируется больше трех секунд прервать процесс и вернуть код ошибки.

Заранее спасибо.
Записан
volvo877
Глобальный модератор
***

Сказали спасибо: +736/-1
Offline Offline

Сообщений: 891


« Ответ #1 : 28 марта 2012, 00:50:37 »

Попробуй использовать CopyFileEx с callback-функцией, внутри которой проверяй прошел ли нужный интервал времени и, если прошел, то изменяй глобальную переменную, переданную в параметр pbCancel... Грубо - так:

Код
BOOL Cancel = FALSE;
 
DWORD WINAPI CallbackCopy(...)
{
   // ...
 
   // Тут проверяешь сколько времени прошло после запуска CopyFileEx
   // Если больше 3-х секунд - то
   Cancel = TRUE;
}
 
// Сам вызов CopyFileEx:
if( !CopyFileEx(..., ..., CallbackCopy, ..., &Cancel, ...) )
{
   // ошибка
}
Записан
AndyTacker
Участник
**

Сказали спасибо: +0/-0
Offline Offline

Сообщений: 26


« Ответ #2 : 29 марта 2012, 18:21:39 »

Спасибо!

Буду пробовать...
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в: