2009-06-22 8 views
2

저는 ResourceChangeListener를 구현하고 save 이벤트를 잡았습니다. 이제 파일에 코드를 추가하고 싶습니다. 어떻게 할 수 있니? BufferedReader/BufferedWriter 사용하려고하지만 파일을 새로 고쳐야합니다. IFile.refreshlocal() 함께 시도해 보면 파일이 잠겨 있다는 오류가 발생 했습니까?이클립스 저장시 내용을 변경하십시오.

답변

1

기사가 될 수 있습니다 "How You've Changed! Responding to resource changes in the Eclipse workspace"

당신은 스레드 안전한 방식으로 작업 공간의 리소스에 액세스해야합니다. 당신이 IWorkspaceRunnable (이전) 또는 WorkspaceJob (새)의 외부 자원 변경하는 경우

(this post에서), 즉, 귀하의 "잠금"메시지의 원인이 될 수 있습니다 : 작업 영역 언제든지 수정할 수 있습니다.
WorkspaceJob 안에 리소스 변경을 배치하면 다른 스레드와의 잠금 문제를 방지 할 수 있습니다.
리소스 뷰 트리를 업데이트하거나 refreshLocal()을 실행할 필요가 없습니다. WorkspaceJob, 모두 잘되면, 당신을 위해 그것을 처리 할 것입니다.

WorkspaceJob에 대한 자세한 내용은 "On the Job: The Eclipse Jobs API"문서를 참조하십시오. 스케줄링 규칙이 작업 공간 루트 자체 또는 작업 공간에 포함 된 자원의에 대한 다른 thread에 의해 보관 유지되고있는 경우

alt text

[...] 우리의 일

이 실행되지 않습니다.
이 작업이 실행되면이 예에서 작업이 완료 될 때까지 다른 스레드가 위에서 언급 한 자원에 대한 규칙을 얻을 수 없습니다.

관련 문제