Versuchen, dies zu tun:
private void startTask() {// main method that creates the background task or class that implements the SwingWorker
AppContext appContext = AppContext.getAppContext();
if(appContext!=null){
appContext.remove(SwingWorker.class);
}
MassiveMigrationTask task = new MassiveMigrationTask();// class that implements the SwingWorker
task.execute();// this process implicitly adds the SwingWorker.class to the appContext
}
Da die Beschreibung: "Die AppContext ist eine Tabelle von Thread verwiesen, die Application-Service-Instanzen speichert"
Dieses Problem tritt im Grunde deshalb auf, weil der AppContext den Namen des Threads namens SwingWorker ... speichert. Wenn Sie also versuchen, eine andere Instanz des Threads zu erstellen, werden Sie wahrscheinlich keinen Erfolg haben, da er den Thread-Namen auswertet bevor Sie eine neue oder zumindest setzen die neuen in dem Haufen der Threads ausgeführt Ausführung werden, fühlen Sie den Code frei Beratung hier:
http://grepcode.com/file/repository.grepcode.com/java/root/jdk/openjdk/6-b14/sun/awt/AppContext.java
PS: Wichtig: "Wenn Sie nicht ein Application Service schreiben, oder nicht wissen, was man ist, bitte verwenden Sie nicht diese Klasse "
Meinst du, du willst Wiederverwendung Ihrer SwingWorker-Implementierungsklasse oder einer Instanz der Klasse? – Qwerky
Ich weiß nicht, vielleicht habe ich etwas falsch, aber wenn ich Arbeiter-Instanzen erstellen und execute() -Methode aufrufen, wird nichts ausgeführt. Wenn ich jedoch versuchte, die doInBackground() -Methode aufzurufen, führten die Worker –