StackOverflowError sur Display.asyncExec
Bonjour,
j'écris une interface pour lire des données entrant d'un port USB.
Des qu'une donnée arrive, un thread lit la donnée, la convertie et l'affiche dans un Table.
le problème c'est que durant mes tests si j'augmente la fréquence d'envois des données sur le port à une donnée/ms j'obtiens rapidement l'erreur suivante:
Code:
1 2 3 4 5 6 7
| Exception in thread "Thread-0" java.lang.StackOverflowError
at org.eclipse.swt.internal.win32.OS.PostThreadMessage(OS.java:2411)
at org.eclipse.swt.widgets.Display.wakeThread(Display.java:3961)
at org.eclipse.swt.widgets.Synchronizer.addLast(Synchronizer.java:62)
at org.eclipse.swt.widgets.Synchronizer.asyncExec(Synchronizer.java:81)
at org.eclipse.swt.widgets.Display.asyncExec(Display.java:603)
at ui.InputTrame_Viewer.addFrame(InputTrame_Viewer.java:132) |
la ligne 132 et la deuxième ligne du code suivant:
Code:
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
| public void addFrame(final CanTrame trame) {
ui.getDisplay().asyncExec(new Runnable() {
public void run() {
TableItem newLigne = new TableItem(ui, SWT.NONE);
// Time
newLigne.setText(0, trame.getStrTime());
// Priority
newLigne.setText(1, String.valueOf(trame.getPriority()));
// Transmitter
newLigne.setText(2, trame.getStrTransmitter());
// Recipient
newLigne.setText(3, trame.getStrRecipient());
// id
newLigne.setText(4, trame.getStrId());
// Length
newLigne.setText(5, String.valueOf(trame.getLength()));
// Data
newLigne.setText(6, trame.getStrData());
if (!btScrollLock.getSelection())
ui.showItem(newLigne);
TxtNbTrameReceived.setText(
String.valueOf(Integer.valueOf(TxtNbTrameReceived.getText()) + 1));
}
});
} |
est ce que quelqu'un peut me dire comment gérer/éviter cette erreur?
Merci d'avance.