2010-08-27 91 views
2

在IResourceChangeListener的上下文中,我需要修改工作區中給定的首選項文件。由於「請注意,在資源更改事件通知期間,可能會禁止對資源進行進一步更改」。執行此更改的唯一解決方案是將其延遲到未來事件(5秒鐘後,下次訪問要修改的文件時,在下一個選擇事件等)。修改文件以響應IResourceChangeListener

我想知道你如何處理這種情況?

回答

3

您可以使用Eclipse Jobs API及其調度規則。 IResource實現了ISchedulingRule,並且您可以使用它在您的資源更改偵聽器中安排一個WorkspaceJob,一旦資源上的鎖定(在您的情況下,首選項文件)被刪除。

+2

沒錯。在你的監聽器中啓動一個WorkspaceJob,讓Eclipse完成剩下的工作。 – zvikico 2010-08-27 14:32:53

+0

@zvikico +1對於您在何處使用該工作的完美評論,我所說的方式有點不清楚。如果你不介意的話,我會在你的回覆中加入你的評論。 – 2010-08-27 15:04:36

0

禁止並行修改是非常合乎邏輯的。我認爲這很正常。此外,允許/禁止並行修改是併發問題。因此,這個問題是關於隔離(ACID)。

要處理這種情況,我會做一些同步,睡眠,等待,通知或類似的文本書解決方法。簡而言之,「鎖定線程在完成時將通知等待的線程」。這是抽象的,但我相信你明白了。