実際の検索をいくつかの他の検索に委譲する私自身のISearchQuery
を作成したいと思います。私は、他の検索のうちの1つだけが実際に何かを見つけると予想しているので、それらを非同期に実行したいのです。分割IProgressMonitor非同期
しかし、私はその目標をどのように達成するのか苦労しています。 Eclipseの標準的な方法は、おそらくジョブを使用することです:
非同期的に大丈夫だが、ここでの問題は、各ジョブには独自のIProgressMonitor
を持っているので、子育て検索がどのように進行に関する情報を得ることができないということです
@Override
public IStatus run(final IProgressMonitor monitor) throws OperationCanceledException {
for (Delegate delegate : delegates) {
Job job = new Job(delegate.getName()) {
@Override
protected IStatus run(IProgressMonitor monitor) {
delegate.run(monitor);
return Status.OK_STATUS;
}
};
job.schedule();
}
return Status.OK_STATUS;
}
(仕事が終わったときに「終了」を除く)。また、私はこれらの仕事が同時に実行されるかどうかもわかりません。
私はSubMonitorを発見し、それは有望に見える:
@Override
public IStatus run(final IProgressMonitor monitor) throws OperationCanceledException {
SubMonitor subMonitor = SubMonitor.convert(monitor, delegates.size());
for (Delegate delegate : delegates) {
SubMonitor delegateMonitor = subMonitor.split(1);
delegate.run(delegateMonitor);
}
return Status.OK_STATUS;
}
は、しかし、今私は、これは非同期で動作するように取得する方法でstruggelingです。
これらのアプローチを組み合わせて、ジョブのIProgressMonitor
を無視しても、私は不正行為のように感じるかもしれません。
IProgressMonitor
を非同期タスクに分割する最も良い方法は何ですか?