Выполнение действия в Eclipse после периода бездействия - PullRequest
0 голосов
/ 16 марта 2011

Я программирую некоторые виды и редакторы в Eclipse, и у меня возникает следующая проблема.

Как заставить что-то произойти только после определенного периода "бездействия"?

Так что моя проблема в этом. У меня есть представление, которое отображает информацию от определенной модели. Модель отправляет события при обновлении, но иногда может отправлять поток событий. Вместо того, чтобы заставлять мое представление перерисовываться при каждом отдельном событии, я хочу установить для таймера событие, и только если этот таймер истекает без появления другого события, я хочу на самом деле обновить свое представление. Однако я не могу найти способ сделать это. Лучшее, что я могу найти, - это метод Display.timerExec, но мне придется вызывать его для каждого события, а затем проверять некоторую временную метку, чтобы увидеть, наступило ли другое событие в это время.

Я посмотрел классы простого Java-таймера, но, похоже, они также не предоставляют мне сбрасываемый таймер.

У кого-нибудь есть идеи, как мне добиться того, что я хочу сделать?

Ответы [ 2 ]

0 голосов
/ 16 марта 2011

Вы можете сделать это с набором задач и потоком, который читает блок.Отслеживайте время последнего добавления в ведро.Пусть поток спит в течение периода задержки, который вы хотите.Когда он просыпается, он должен видеть, превышает ли время последнего добавления задержку, и выполнять задачи, если он это делает.

Вот моя реализация из проекта Sapphire:

http://dev.eclipse.org/viewcvs/viewvc.cgi/org.eclipse.sapphire/plugins/org.eclipse.sapphire.ui/src/org/eclipse/sapphire/ui/DelayedTasksExecutor.java?view=markup&revision=1.2&root=Technology_Project

Не стесняйтесь копировать, если вы в состоянии соблюдать условия EPL.В противном случае используйте концепции для построения собственной реализации.

0 голосов
/ 16 марта 2011
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...