minimize

事業拡大のため、新しい仲間を募集しています。
→詳しくはこちら

アクション実行時に長い時間の掛かる処理をする場合など、
そのまま処理を記述するとEclipseが固まってしまいます。

public class SampleAction {
    public void run(IAction action) {
        runLongTime(); // この間Eclipseが固まってしまう
    }
    
    /** 5秒間掛かる処理 */
    private void runLongTime() {
        for (int i = 0; i < 5; i++) {
            try {
                Thread.sleep(1000);
            } catch (InterruptedException e) {}
        }
    }
}

Job

これを解決するには、org.eclipse.core.runtime.jobs.Job を使います。
使い方はきわめて簡単です。

new Job("jobName") {
    @Override
    protected IStatus run(IProgressMonitor monitor) {
        runLongTime();
        return Status.OK_STATUS;
    }
}.schedule();

このように、Jobの継承クラスを作成して
その中の run メソッド(abstract)を実装します。
ここで時間の掛かる処理を記述すれば、Eclipseが固まることなく処理が実行できます。

Progress表示

処理中はこのように右下にProgress表示がされます。