Ich habe eine Situation. Ich habe eine Eclipse-Job mit folgenden Code:Eclipse-Job mit UI-Zugriff
private class ExecutionJob extends Job {
public static final String MY_FAMILY = "myJobFamily";
public ExecutionJob(String name) {
super(name);
}
@Override
protected IStatus run(IProgressMonitor monitor) {
monitor.beginTask("executing ...... ", IProgressMonitor.UNKNOWN);
methodForExecution();
monitor.done();
return Status.OK_STATUS;
}
@Override
public boolean belongsTo(Object family) {
return family == MY_FAMILY;
}
}
Und diese methodForExecution() hat Code wie folgt:
public void methodForExecution(){
PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage().showView("view_id");
}
Nun ist die Situation, Job öffnet so etwas wie Progress auf und Meine Methode versucht, auf die Benutzeroberfläche zuzugreifen, die tatsächlich hinter dem Fortschrittsmonitor dieses Jobs steht. Und es gibt NullPointerException, da der Fortschrittsmonitor ActiveWorkbenchWindow nicht enthält.
Ich kann UIJob nicht verwenden, da ich diese methodForExecution() asynchron ausführen muss. Kann mir bitte jemand helfen, dies zu lösen.
Ich stehe damit http://stackoverflow.com/questions/19325603/eclispe-does-not-show-progress-bar-of-user-threads Problem bei der Verwendung von UIJob – Rajan
Wenn alles, was Sie tun, ist eine Show-Ansicht Der Job wird sehr schnell fertig sein und keine Zeit haben, einen Fortschrittsbalken anzuzeigen. –
Ich habe die Antwort aktualisiert, um deutlicher zu machen, wann ich UIJob oder einen normalen Job verwenden soll. –