Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > .NET для новичков > запись времени выполнения действий


Автор: AGENTxXx 25.1.2010, 02:21
Добрый ночи (у меня так как сейчас во всю ночь). Ребята, нужна ваша помощь (необизательно код, а хотя бы для алгоритм реализации), может кто то имел с чем то подобным. Задача такая: есть например программа для работы с файлом (текстовым) и желательно записать время всех изменении (ну например работы с текстом), то что курсор например из одного места перешел в другое. Ну или еще попроще вроде задача: нужно например записать в textbox время изменения положения курсора (в миллисекундах).
Пример действий проги:
курсор передвинулся на 100 пикселей вправао
прога например будет отлавливать события каждые 0.5 секунды
предположим что она 100 пикселей прошла за секунду, тогда в textbox должно записаться:
0 - старт проги время равно 0 (начальная точка курсора и курсор не успел двинуться)
500 - положение курсора например стало на 47 вправо
1000 - положение на 100 вправо.
Теперь например ситуация, курсор стоит на месте 4 секунды и потом двигается на 40 пикселей влево, в textbox должно записаться:
5500. Т.е. время идет, если даже курсор недвигается. Т.е. нужно в конечном итоге решить 2 вещи:
1) пославленную задачу
2) минимум загрузки процессора

У меня вот какая идея: читаем системную дату например, и используем событие  MouseMove (вроде так) и если действий с мышкой нет, то это событие не выполняется, а если действие есть о мы из текущего времени вычитаем предыдущее которое записанно и в итоге получаем время сколь мышь стаяла. Только вот если вдруг пользователю сбрендит помемять дату то прога полетит можно сказать. В итоге, как бы так реализовать чтобы в проге был реализован щетчик этого времени? Вроде есть, время существования процесса, может по нему определять, или как лучше. Ну и все же желательно к этому чтобы проц не сильно нагружало, так как сами понимаете что прилично может быть обработок. Зараннее большое спасибо всем!

Автор: explorer 25.1.2010, 13:45
Вообще идея с опросом постоянным как-то пугает. У меня есть подозрение, что один только опрос будет занимать прилично ресурсов.

Есть предложение делать пометки в обработчиках событый (например на то же нажатие клавиши, т.е. перемещение курсора).


Автор: AGENTxXx 25.1.2010, 14:08
Вот вот, я про тоже. Что если будет постоянно опрашиваться, то будут ресурсы жрать прога, а так же ни какой пользы это приносить не будет (конечно это будет работать, но КПД мне кажеться в минус уйдет). Вот я и думаю как же сделать так чтобы это было хорошее соотношение: и работала и загрузка на минимум. Вот только какие идеи приходят, но потом ломаются, так как то одно не выполняется то другое. Но у меня пока только склонения к тому, чтобы работать со временем процесса(нашего активного потока), ну т.е. время его сущ-ия. с ним уже все манимуляции проводить. Тогда в общем можно будет реализовать. Например такой алг: если мышка стоит более 5-х секунд, то мы таймер программно отключаем до следующего движения. А как только произойдет следующее движение, мы из времени существования потока(или процесса) вычитаем время последнего активного движения. В итоге у нас эта разность и будет равняться времени простоя. Может кто лучше знает как реализовать?

Автор: gambit 27.1.2010, 12:24
А если как то так? Правда я взял за основу тики, не особо удачно, ибо кол-во тиков  в секунде разное. Но общую тенденцию ты поймешь.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)