Show remaning time

5 отговора 182 прегледа
#1

Show remaning time

Здравейте искам да питам следния въпрос ! Да речем имам query с 45000 записа и тези данни ги обработвам по някакъв начин, като обикалям всички записи от началото до края. Исками се по някакъв начин да мога да сложа някакво оставащо време до края на процеса?
За сега съм сложил само един Gauge но ми иска да има и оставащо време като да речем копирането голям файл или инсталиране на някаква програма ?
Пробвах да засека колко записа обработва на 10 секунди и да изчисля оставащото време според това! Но понякога процесора обработва и други данни и времето няма нищо общо с това което аз показвам!

Защо ми се струва че всичко това клони към CriticalSections но за съжаление не съм работил само с прости нишки а не с CriticalSections !?

Благодаря предварително !

Отговор
в отговор на Time #2

Re: Show remaning time

изминало_време * (общо_записи / обработени_записи)

Естествено няма смисъл да актуализираш за всеки обработен запис.
Определено това е само едно предположение и ако си свалял файлове с FlasGet знаеш какво означава.

Отговор
в отговор на Йopдaн #3

Re: Show remaning time

Изминало време не ме вълнува толкова колкото оставащото!

Това просто ми изникна като идея която продължава да ме гризе вътре ако някой знае от каде мога да прочета малко информация за темата моля !

Отговор
в отговор на Time #4

Re: Show remaning time

Аз ти предлагам да забравиш за оставащото време. Не ти ли се е случвало програмни продукти и то авторитетни да дават погрешно време. Все пак това не е свързано само с твоята програма.

Отговор
в отговор на Time #5

ОСТАВАЩО_ВРЕМЕ

ОБЩО_ВРЕМЕ = изминало_време * (общо_записи / обработени_записи)

ОСТАВАЩО_ВРЕМЕ = общо_време - изминало_време =
изминало_време * (общо_записи / обработени_записи - 1)

Отговор
в отговор на Time #6

Re: Show remaning time

Доколкото си спомням ADO-то имаше някаква callback ф-я след обработка на поредния запис. Това май важеше само за insert/update/delete, но не и за select.
Общият бр. на записите можеш да ги намериш с select count(*) from my_table where ...... Но почти съм сигурен, че в АДО-то има събитие за четене на отделен запис. Да има, проверих. Виж OnFetchProgress на ADODataSet. Има и пример в хелпа.

Отговор