Hallo zusammen,
ich habe zur Zeit ein Problem mit der OleAutomation in Kombination mit Threads. Habe dazu auch noch keine Erklärung oder anderen Beitrag gefungen.
Ich versuchs mal zu beschreiben:
Zunächst erstelle ich eine OleAutomation einer Clientsite und führe anschliessend dort eine Methode aus.
dann in einer anderen methode aber gleiche klasse
soweit so gut. wenn ich das normal sequenziell abarbeite funktioniert das super.
ABER sobald jetzt ein Thread in Spiel kommt geht das ganze in die Hose.
Ich führe einmal das Connect (insgesamt müssen mehrere sachen verbunden werden) aus und starte anschliessend den thread.dieser pollt eine Schnittstelle, sobald etwas hereinkommt wird ein event ausgelöst und dann die Start() Methode aufgerufen. Das automation wird auch gefunden aber die Methode getIDsOfNames(new String[] {"Start"} liefert nur null zurück!
Eine Sache die mir aufgefallen ist: wenn man Start() folgender maßen umschreibt:
und wieder vom Thread aus startet geht das schon bei der zuweisung schief und man erhält eine NullPointerException vom OLEAutomation Konstruktor zurück. Genauer geht die Zeile
in der OLEAutomation.class Klasse schief. (getAutomationObject() liefert einfach null)
Ich hoffe das ich mein Problem einiger maßen verständlich gemacht habe, und verbleibe mit der Hoffnung das jemand von euch eine Erklärung oder noch besser eine Lösung hat!
Vielen DANK schon mal im vorraus!
mfg
nopp
ich habe zur Zeit ein Problem mit der OleAutomation in Kombination mit Threads. Habe dazu auch noch keine Erklärung oder anderen Beitrag gefungen.
Ich versuchs mal zu beschreiben:
Zunächst erstelle ich eine OleAutomation einer Clientsite und führe anschliessend dort eine Methode aus.
Code:
private OleAutomation automation;
public void Connect(){
OleFrame frame = new OleFrame(this, SWT.NONE);
OleControlSite controlSite = new OleControlSite(frame, SWT.NONE, "XYZ.Document");
automation = new OleAutomation(controlSite);
}
dann in einer anderen methode aber gleiche klasse
Code:
public void Start(){
int[] disIDs = automation.getIDsOfNames(new String[] {"Start"});
}
soweit so gut. wenn ich das normal sequenziell abarbeite funktioniert das super.
ABER sobald jetzt ein Thread in Spiel kommt geht das ganze in die Hose.
Ich führe einmal das Connect (insgesamt müssen mehrere sachen verbunden werden) aus und starte anschliessend den thread.dieser pollt eine Schnittstelle, sobald etwas hereinkommt wird ein event ausgelöst und dann die Start() Methode aufgerufen. Das automation wird auch gefunden aber die Methode getIDsOfNames(new String[] {"Start"} liefert nur null zurück!
Eine Sache die mir aufgefallen ist: wenn man Start() folgender maßen umschreibt:
Code:
public void Start(){
automation = new OleAutomation(controlSite);
int[] disIDs = automation.getIDsOfNames(new String[] {"Start"});
}
Code:
objIDispatch = clientSite.getAutomationObject();
Ich hoffe das ich mein Problem einiger maßen verständlich gemacht habe, und verbleibe mit der Hoffnung das jemand von euch eine Erklärung oder noch besser eine Lösung hat!
Vielen DANK schon mal im vorraus!
mfg
nopp