Visualizzazione dei risultati da 1 a 2 su 2
  1. #1
    Utente di HTML.it
    Registrato dal
    Jul 2006
    Messaggi
    2

    Accesso a oggetto da classe Thread

    Salve ragazzi,
    confido in voi per un problema (che probabilmente è banale) riguardo all'accesso ad un oggetto da una classe thread. Praticamente io vorrei avere una label (Interfacccia grafica con SWT) che ogni secondo si aggiorna. Per far questo ho creato un thread che ogni secondo ricava l'ora di sistema e la stampa nella label ma quando cerco di accedere alla label mi da l'errore Invalid Thread Access. Ho provato in 289372 modi ma non ci riesco... ho appena iniziato a programmare ad oggetti e questa cosa proprio non la capisco.
    Qualcuno può aiutarmi? Uso Eclipse + SWT Designer in linux. Grazie.

  2. #2
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284

    Re: Accesso a oggetto da classe Thread

    Originariamente inviato da NiuGibO
    quando cerco di accedere alla label mi da l'errore Invalid Thread Access. Ho provato in 289372 modi ma non ci riesco... ho appena iniziato a programmare ad oggetti e questa cosa proprio non la capisco.
    La gestione delle interfacce utente è "storicamente" e tipicamente gestita con un singolo thread.
    Realizzare una gestione della interfaccia utente che sia completamente thread-safe è complicato, difficile e comunque apporterebbe delle penalità in fatto di prestazioni per via della necessaria sincronizzazione tra più thread.

    Personalmente non conosco SWT ma conosco un pochino Swing ed è la stessa cosa anche lì. Tutta la gestione della interfaccia utente (disegno, gestione degli eventi, ecc...) è affidata ad un singolo e unico thread che viene in genere chiamato "event-dispatch-thread" (EDT). Salvo casi particolari e documentati, l'accesso e l'interazione con qualunque componente della interfaccia utente va fatto solo ed esclusivamente nel contesto di quel thread. Non da un qualunque altro thread creato dal programmatore.

    Swing mette a disposizione dei metodi appositi per far eseguire "qualcosa" nel contesto del EDT. Credo che in SWT ci sia una cosa simile/equivalente. Quindi documentati prima di tutto su questo argomento che è fondamentale.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.