| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > .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 |
| А если как то так? Правда я взял за основу тики, не особо удачно, ибо кол-во тиков в секунде разное. Но общую тенденцию ты поймешь. |