進捗モニタにバックグラウンドで実行中の操作があるかどうかを継続的に確認しようとしています。リアルタイムでJob.getJobManager.IsIdle()を使用して進捗モニタを確認しています
このため、Job.getJobManager.IsIdle()
を使用しました。
私は次のことを試してみました:
- 仕事の中に置きます。
WorkspaceJob job = new WorkspaceJob("Hello")
{
@Override
public IStatus runInWorkspace(IProgressMonitor monitor) throws CoreException
{
while(!Job.getJobManager().isIdle())
{
System.out.println(!Job.getJobManager().isIdle());
}
return Status.OK_STATUS;
}
};
job.setPriority(Job.SHORT);
job.schedule();
しかしJob 'Hello'
が実行されているためJob.getJobManager.isIdle
はfalseを返すことはありませんので、これは動作しません。
非同期スレッド内に配置します。
new Thread(new Runnable() { @Override public void run() { Display.getDefault().asyncExec(new Runnable() { @Override public void run() { while(!Job.getJobManager().isIdle()) { System.out.println("hi"); } } }); } }).start();
しかし、(既存がある場合)、これが終了する他のプロセスを妨げる主なEclipseのGUIを凍結するよう、これはどちらか動作しません。
誰かが提案や入力方法を教えてくれれば、それは素晴らしいことです!