2012-09-03 30 views
7

Me estoy poniendo la excepción:la forma de retrasar modificactions para el árbol de recursos cuando está bloqueado

org.eclipse.core.internal.resources.ResourceException: El árbol de recursos está bloqueado para modificaciones.

Después de algunas búsquedas descubrí, que esto viene del hecho de que estoy tratando de agregar marcadores a un archivo. Estoy haciendo esto cuando recibo una notificación de cambio de archivo. Entonces, cuando se llama a mi código de modificación, el espacio de trabajo todavía está en el medio del proceso de notificación y no permite modificaciones en el árbol de recursos.

¿Cómo puedo guardar marcadores para poder agregarlos al archivo más tarde o lo que sería otra forma de retrasar estos cambios?

Respuesta

8

No puede modificar el árbol de recursos de un manejador de eventos delta de recursos (imagínese la posibilidad de un caos completo si pudiera). El enfoque más común que conozco es programar un trabajo y hacer las modificaciones dentro del método run() del trabajo. Esto significa que debe recordar las modificaciones que desea hacer para que se puedan hacer dentro del trabajo. También significa que no se pueden hacer demasiadas suposiciones sobre el estado del árbol de recursos porque teóricamente se puede ejecutar algún otro trabajo antes que el tuyo que realice cambios en el árbol.

+4

Véase 'org.eclipse.core.resources.WorkspaceJob' para un ejemplo de Jobs trabajar con espacios de trabajo. –

0

Cambio IResourceChangeEvent.PRE_BUILD va a resolver este problema .. trabajado para mí

Cuestiones relacionadas