ProgressMonitorDialog dialog = new ProgressMonitorDialog(PlatformUI.getWorkbench().getActiveWorkbenchWindow().getShell());
try {
dialog.run(true, false, new IRunnableWithProgress() {
public void run(final IProgressMonitor monitor) {
monitor.beginTask("Progress", IProgressMonitor.UNKNOWN);
Job job = new Job("Job") {
@Override
protected IStatus run(IProgressMonitor arg0) {
Display.getDefault().asyncExec(new Runnable() {
public void run() {
for (int i = 0; i < 1000; i++) {
try {
doTask();
}
}
});
return Status.OK_STATUS;
}
};
job.schedule();
try {
job.join();
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
monitor.done();
}