Hallo Community,
Ich habe eine Methode, die über asyncExec eine andere Funktion über ein Runnable ausführt, um Daten aus einem Browser Control (JavaScript) auszulesen:
Der Code lautet wie folgt (vereinfacht):
Das Ergebnis (result) kann in der methode "ok" korrekt auf der konsole ausgegeben werden.
Mein Problem ist jedoch, dass die Funktion in diesem Fall sofort zurückspringt und nicht darauf wartet, bis der richtige Wert für result in ok bzw. error zugewiesen wurde.
Weiss jemand, wie ich hier ein entsprechendes Wartekonstrukt implementieren kann??
Warten in einer Schleife mit Thread.sleep(x) funktioniert in diesem Fall ja nicht, da somit auch die AUsführung des Runnable blockiert wird.
Da ich in der Methode getValueFromBrowser auf das BrowserControl zugreifen muss, kann ich jedoch auch keinen eigenen Thread erstellen, sondern muss die Methode als UI Thread ausführen (liege ich da richtig?)
Weiss jemand, wie ich das bewerkstelligen könnte?
Danke im Voraus!
mfg matthias
Ich habe eine Methode, die über asyncExec eine andere Funktion über ein Runnable ausführt, um Daten aus einem Browser Control (JavaScript) auszulesen:
Der Code lautet wie folgt (vereinfacht):
Java:
private static String result;
public static String getValue(final int value)
{
Display.getCurrent().asyncExec(new Runnable() {
public void run() {
getValueFromBrowser(value, new MyCallback(){
public void ok(String s) {
result = s;
}
public void error() {
result = "error";
}
});
}
});
// HIER warten auf Ende von ok bzw. error
return result;
}
Mein Problem ist jedoch, dass die Funktion in diesem Fall sofort zurückspringt und nicht darauf wartet, bis der richtige Wert für result in ok bzw. error zugewiesen wurde.
Weiss jemand, wie ich hier ein entsprechendes Wartekonstrukt implementieren kann??
Warten in einer Schleife mit Thread.sleep(x) funktioniert in diesem Fall ja nicht, da somit auch die AUsführung des Runnable blockiert wird.
Da ich in der Methode getValueFromBrowser auf das BrowserControl zugreifen muss, kann ich jedoch auch keinen eigenen Thread erstellen, sondern muss die Methode als UI Thread ausführen (liege ich da richtig?)
Weiss jemand, wie ich das bewerkstelligen könnte?
Danke im Voraus!
mfg matthias
Zuletzt bearbeitet: