在IResourceChangeListener的上下文中,我需要修改工作区中的给定首选项文件。由于“请注意,在资源更改事件通知期间,可能不允许对资源进行进一步更改。”执行此更改的唯一解决方案是将其延迟到将来的事件(5秒后,在下次访问要修改的文件时,在下一个选择事件等。)
我很想知道你是如何处理这种情况的?
答案 0 :(得分:3)
您可以使用Eclipse Jobs API及其日程安排规则。 IResource
实现ISchedulingRule
,您可以使用它来安排资源更改侦听器中的WorkspaceJob
在资源上的锁定(在您的情况下是首选项文件)被删除后运行。 / p>
答案 1 :(得分:0)
不允许并行修改是合乎逻辑的。我认为这是正常的。此外,允许/禁止并行修改是并发问题。因此,这个问题是关于隔离(ACID)。
为了处理这种情况,我会做一些同步,睡眠,等待,通知或类似的教科书解决方法。简而言之,“锁定线程将在完成时通知等待线程”。这是抽象的,但我相信你明白了。