Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

SWT redraw Thread-Problem

Empfohlene Antworten

Veröffentlicht

Hallo,

ich habe ein folgedes Problem:

Mein SWT-Canvas in dem ich selbst etwas zeichnen möchte ich neu zeichnen lassen, sobald ein anderer Programmteil neue Daten für dieses Canvas vorliegen hat bringt mir eine Exception. Da die Daten in einem separaten Thread geladen werden habe ich in diesem einfach die redraw()-Methode des Canvas gerufen. Allerdings verursacht mir das wiederrum eine "SWTException: Invalid thread access".

Scheinbar kann den redraw nur ein bestimmter Thread auslösen und sonst keiner. Hat jemand eine Idee, wie man das umgehen kann? Gibts irgendwie etwas wie ich SWT sagen kann das es bei gelegenheit diese Componente mal neu Zeichnen soll?

Danke.

Das ist nicht nur bei SWT so.

Auch bei normalem Swing und AWT ist es so, dass nur der GUI-Thread zeichnen darf.

Als Lösung gibt es z.Bsp.:

final MeinCanvas myCanvas = meine Referenz;

SwingUtilities.invokeLater(new Runnable()

{

	public void run()

	{

		myCanvas.redraw();

	}

});	

  • Autor

Danke! Genau nach sowas hab ich gesucht.

Das ist nicht nur bei SWT so.

Auch bei normalem Swing und AWT ist es so, dass nur der GUI-Thread zeichnen darf.

Das mag schon sein, dennoch kann ich die repaint()-Methode bei Swing von jeden x-beliebigen Thread aufrufen. Und die Methode blockiert auch so lang wie der repaint dauert, weils eben gekapsel ist.

Archiv

Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.