2012-09-03 35 views
7

我得到异常延迟modificactions的资源树:如何被锁定时

org.eclipse.core.internal.resources.ResourceException:资源树被锁定进行修改。

经过一番搜索后,我发现,这是来自于我试图将标记添加到文件的事实。当我收到文件更改的通知时,我正在这样做。因此,当我调用修改代码时,工作空间仍处于通知过程的中间,并且不允许修改资源树。

如何保存标记以便我可以稍后将它们添加到文件中,或者以其他方式延迟此更改?

回答

8

您不能从资源增量事件处理程序修改资源树(想象如果可以的话,可能会出现混乱)。我知道的最常见的方法是安排作业并在作业的run()方法中进行修改。这意味着您需要记住您想要进行的修改,以便在作业中完成这些修改。这也意味着你不能对资源树的状态做太多的假设,因为从理论上讲,其他的Job可能会在你的树之前运行。

+4

见'org.eclipse.core.resources.WorkspaceJob'乔布斯与工作区工作的例子。 –

0

变化IResourceChangeEvent.PRE_BUILD将解决这个问题..为我工作