8

私は例外を取得しています:

org.eclipse.core.internal.resources.ResourceException: リソース ツリーは変更のためにロックされています。

いくつか検索した結果、これはファイルにマーカーを追加しようとしていることが原因であることがわかりました。ファイルの変更が通知されたときに、これを行っています。そのため、変更コードが呼び出されると、ワークスペースはまだ通知プロセスの途中であり、リソース ツリーへの変更は許可されません。

後でファイルに追加できるようにマーカーを保存するにはどうすればよいですか、またはこの変更を遅らせる別の方法は何ですか?

4

2 に答える 2

9

リソースデルタイベントハンドラーからリソースツリーを変更することはできません(可能であれば、完全な混乱の可能性を想像してください)。私が知っている最も一般的なアプローチは、ジョブをスケジュールし、ジョブのrun()メソッド内で変更を加えることです。これは、ジョブ内で実行できるように、実行する変更を覚えておく必要があることを意味します。また、理論的には、ツリーに変更を加える他のジョブが実行される可能性があるため、リソースツリーの状態についてあまり多くの仮定を立てることができないことも意味します。

于 2012-09-03T19:33:51.497 に答える
0

IResourceChangeEvent.PRE_BUILD を変更すると、この問題が解決します。

于 2015-06-29T07:26:41.500 に答える