Конференция "WinAPI" » CreateFile [D5, NT4, WinXP]
 
  • Сергей М. © (30.12.08 12:15) [20]

    > При записи файла размером 200м возникает не ловкая пауза
    > перед пользователем


    Чтобы она была "ловкая", нужно как минимум оживить UI, согласен ?
    Сделать это можно любым из двух способов - вынос операции (блокирующей или неблокирующей - неважно) в доп.процесс/доп.поток или запуск операции в UI-потоке в асинхронном неблокирующем режиме. Последнее реализуется как раз с использованием overlapped i/o механизма.

    Прогресс-нотификация же - это совсем другая (и весьма нетривиальная по ряду важных причин) задача, напрямую не связанная с i/o-режимами.

    Win32API предлагает единственную функцию, предоставляющую интерфейс прогресс-нотификации - CopyFileEx. Но если посмотреть на ее "внутренности", то там можно увидеть то самое блочное чтение/запись, от которых ты пытаешься уйти. И уйти по непонятным мне пока причинам, ибо ничто не мешает использовать блоки более крупного размера, нежели 0,5К
  • OlegNik (30.12.08 12:55) [21]
    Реализовал следующим способом
    1. Убедился что файл действительно большой
    2. Запускаю пробную запись(чтение) отследил время
    3. Ну а потом действительно твоя помощь
                в цикл к варианту WAIT_TIMEOUT добавил расчет положения
                прогресса (формулу определения дальности еще не отменили)
    В случае с WAIT_OBJECT_0 позиция прогресса = 100 (Ух ты высокое методическое мастерство позволило завершить процесс записи/чтения несколько быстрее чем ожидалось).
    Все спасибо, вопрос закрываю.
  • Сергей М. © (30.12.08 13:01) [22]
    Фигня это, а не прогресс. В топку его.
    Любое изменение в общесистемных условиях выполнения операции приведет к обрушению этого карточного домика по самый фундамент.

    Уж лучше честную липу показать юзеру - анимашку какую-нить.. Главное чтобы не скучал)
  • Сергей М. © (30.12.08 13:04) [23]

    > в цикл к варианту WAIT_TIMEOUT добавил расчет положения


    Это называется "К соседу за спичками через Северный полюс".
    По сути мощь и возможности wait-функции сводятся до использования в качестве банального таймера.
 
Конференция "WinAPI" » CreateFile [D5, NT4, WinXP]
Есть новые Нет новых   [134435   +35][b:0][p:0]