2016-04-27 10 views
0

Ich benutze RCP schon länger und möchte im Hintergrund einen Editor mit der Möglichkeit öffnen, etwas abzubrechen und etwas zu tun. Die Composite erstellt von createPartControl kann ziemlich groß sein.Eclipse RCP: createPartControl in den Hintergrund verschieben

Aber bis jetzt konnte ich nichts finden, was dabei hilft. Ich habe die WorkspaceJob in Eclipse-RCP ausprobiert, aber dann habe ich Invalid thread access. Danach versuchte ich die UIJob. Dieser löst keine Ausnahme aus, blockiert jedoch die Benutzerschnittstelle weiterhin davon, ihn anders zu verwenden, und es gibt keine Möglichkeit, den Job abzubrechen (runInUIThread).

Ich dachte, es muss eine Möglichkeit geben, die Composite im Hintergrund zu initialisieren und dann die Zeichnung synchron mit der UIThread zu tun. Aber bis jetzt konnte ich nichts passendes dafür finden.

Hat jemand eine Idee, wie man das erreicht?

Antwort

2

Alles, was Benutzeroberflächenkomponenten wie Composite erstellt, muss im UI-Thread ausgeführt werden, damit dies nicht möglich ist.

Eclipse erwartet, dass createPartControl schnell ausgeführt wird. Wenn Sie etwas zu tun haben, das kein Erstellen von Benutzeroberflächenobjekten beinhaltet, können Sie diese Teile in einem Job ausführen.