8

我得到了例外:

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

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

如何保存标记以便稍后将它们添加到文件中,或者还有什么方法可以延迟此更改?

4

2 回答 2

9

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

于 2012-09-03T19:33:51.497 回答
0

更改 IResourceChangeEvent.PRE_BUILD 将解决此问题.. 为我工作

于 2015-06-29T07:26:41.500 回答