Bonjour
J'ai un petit probleme avec un thread.
J'ai crée un tableviewer dans mon thread principal, puis je lance un thread qui se connecte en tant que serveur.
J'aimerais ajouter des tableItems dans mon tableViewer:
J'obtiens l'erreur:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32 public class DbgConsole extends ViewPart { public void createPartControl(Composite parent) { tableDisplay = new TableDisplay(parent); makeActions(); } private void makeActions() { actionStart = new Action(){ public void run(){ TelnetServer telnetserver = new TelnetServer(23, tableDisplay, null); telnetserver.start(); } }; } } public class TelnetServer extends Thread { public TelnetServer(int port, TableDisplay tableDisplay, BufferedReader fin) { this.tableDisplay = tableDisplay; } public void run() { TableItem item1 = new TableItem(tableDispaly.getTable(), SWT.NONE); item1.setText(new String [] {"1", "test"}) ; // ... // pour chaque message recu sur le port, ajouter item // ... } }
J'ai lu dans ce forum qu'il fallait utiliser, pour accèder à un "widget" SWT à partir d'un thread java,
Code : Sélectionner tout - Visualiser dans une fenêtre à part if (display.thread != Thread.currentThread ()) error (SWT.ERROR_THREAD_INVALID_ACCESS);
la méthode asyncexec de l'objet Display.
mais je n'ai pas compris ou l'utiliser.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 Display.getDefault().asyncExec(new Runnable() { public void run() { monChamp.setText("Le compteur vaut :" + cpt); } }
merci pour votre aide.
Partager