Essayez de faire ceci:
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
}
Comme la description: "Le AppContext est une table référencée par ThreadGroup qui stocke des instances de service d'application." Donc, ce problème se produit essentiellement parce que AppContext enregistre le nom du thread appelé SwingWorker ..., donc si vous essayez de créer une autre instance du thread, vous aurez probablement aucun succès, car il évalue ce nom de thread avant d'exécuter une nouvelle ou au moins mis le nouveau dans le tas de fils à exécuter, ne consulter gratuitement le code ici:
http://grepcode.com/file/repository.grepcode.com/java/root/jdk/openjdk/6-b14/sun/awt/AppContext.java
PS: Important: "Si vous n'êtes pas en train d'écrire un service d'application, ou ne savez pas ce que l'on est, s'il vous plaît ne pas utiliser cette classe "
Voulez-vous dire que vous voulez réutiliser votre classe d'implémentation SwingWorker ou l'instance de la classe? – Qwerky
Je ne sais pas peut-être que j'ai quelque chose de mal mais quand je crée des instances de travail et appelez la méthode execute() rien ne sera exécuté. Cependant, quand j'ai essayé d'appeler la méthode doInBackground() les travailleurs ont exécuté –