2012-09-03 34 views
7

我得到異常延遲modificactions的資源樹:如何被鎖定時

org.eclipse.core.internal.resources.ResourceException:資源樹被鎖定進行修改。

經過一番搜索後,我發現,這是來自於我試圖將標記添加到文件的事實。當我收到文件更改的通知時,我正在這樣做。因此,當我調用修改代碼時,工作空間仍處於通知過程的中間,並且不允許修改資源樹。

如何保存標記以便我可以稍後將它們添加到文件中,或者以其他方式延遲此更改?

回答

8

您不能從資源增量事件處理程序修改資源樹(想象如果可以的話,可能會出現混亂)。我知道的最常見的方法是安排作業並在作業的run()方法中進行修改。這意味着您需要記住您想要進行的修改,以便在作業中完成這些修改。這也意味着你不能對資源樹的狀態做太多的假設,因爲從理論上講,其他的Job可能會在你的樹之前運行。

+4

見'org.eclipse.core.resources.WorkspaceJob'喬布斯與工作區工作的例子。 –

0

變化IResourceChangeEvent.PRE_BUILD將解決這個問題..爲我工作