Seite 1 von 1

[gelöst] QObject used from outside its own thread

Verfasst: 17. Dezember 2007 10:52
von RoS
Hallo,
ich arbeite für ein Studienprojekt an einem Netzwerkgame und bin hier auf ein Problem gestoßen ;-)

Nach dem der Client ein Game-DTO erhalten hat, soll das aktuelle Spiel auf dem Client dargestellt werden.

Allerdings führt das Aktualisieren der Zeichenfläche zu einer Exception.

Code: Alles auswählen

Exception in thread "Thread-2" QObject used from outside its own thread, object=de.ros_projects.ArcaneTower.gui.GamePanel@3e89c3, objectThread=Thread[main,5,main], currentThread=Thread[Thread-2,5,main]
	at com.trolltech.qt.QtJambiInternal.threadCheck(QtJambiInternal.java:498)
	at com.trolltech.qt.gui.QWidget.update(QWidget.java:1919)
	at de.ros_projects.ArcaneTower.gui.GameGUIController.refreshGUI(GameGUIController.java:119)
	at de.ros_projects.ArcaneTower.gui.GameGUIController.playerStatusChanged(GameGUIController.java:107)
	at de.ros_projects.ArcaneTower.gui.GameGUIController.playerStatusChanged(GameGUIController.java:1)
	at de.ros_projects.ArcaneTower.game.Player$1.run(Player.java:243)

Code: Alles auswählen

	private void refreshGUI()
	{
		System.out.println("Player.refreshGUI()");
		panel.showGame(game);
		
		panel.update();
	
	}
Der gesamte Quellcode ist unter:
http://www.ros-projects.de/websvn/listi ... te+Systeme
einsehbar.

Verfasst: 17. Dezember 2007 19:32
von RoS
Vereinfacht ist die Frage. Wie greif ich auf die Widgets in nem laufenden Thread zu.

Verfasst: 19. Dezember 2007 14:08
von RoS
Ok geht natürlich mit Signalen von einem Thread auf den anderen. Problem war nur, dass ich in dem Daten-Thread nen extra QObject anlegen musste, welches das Signal sendet. Da der Standard-Java-Thread dazu nicht in der Lage ist.