Hallo,
Ich habe eine Anwendung in welchem verschiedene API's von diversen Drittherstellern verwendet werden. Das Programm erstellt das entsprechende Handle zu diesen COM-Objekten im Hauptprogramm. Das Handle wird in einer PUBLIC Variablen gespeichert. In einem zweiten Thread, dem Workerthread benutze ich dieses Handle zum ansprechen der einzelnen Methoden. Eine Neuinstanzierung o.ä. findet über die gesamte Laufzeit den Programms nicht statt.
Das klappt bis jetzt ohne Probleme.
Bei der Anbindung einer weiteren API kommt es aber nun zu massiven Problemen. Die API selber ist sehr einfach ohne besondere Anforderungen.
Es kommt in unbestimmten Fällen (sofort nach dem Start oder nach 3 Tagen) zu dem Fehler:
------------------------------------------------------------------------------
FEHLERPROTOKOLL von "L:\Programme\XMLConnector\XMLConnector.exe" Datum: 31.12.2010 20:39:45
Xbase++ Version : Xbase++ (R) Version 1.90.331
Betriebssystem : Windows XP 05.02 Build 03790 Service Pack 2
------------------------------------------------------------------------------
oError:args :
-> VALTYPE: C VALUE: ArchiveByFile
-> VALTYPE: C VALUE: \\dc14\HH\HKR\WORK\ARCHIV-AUSTAUSCH\EXP\$EXT_832A498A-0279-D2BB-E011-141575807DDA_2Charta.xml
-> VALTYPE: C VALUE:
oError:canDefault : Y
oError:canRetry : N
oError:canSubstitute: Y
oError:cargo : NIL
oError:description : Unbekannter Fehler
oError:filename : NIL
oError:genCode : NIL
oError:operation : ArchiveByFile
oError:osCode : -2147467259
oError:severity : 2
oError:subCode : 6500
oError:subSystem : Automation
oError:thread : 5
oError:tries : NIL
------------------------------------------------------------------------------
CALLSTACK:
------------------------------------------------------------------------------
Called from XML_QUERRY2(6913)
Called from PFADSCAN:EXECUTE(3131)
Die Methode ArchiveByFile ist definitiv vorhanden. Die Funktion wurde 1-2 Sekunden vorher erfolgreich aufgerufen.
Hat einer schon mal solche Probleme beim ansprechen einer COM?
Die COM ist in VB6 programmiert.
Über jeden Hinweis wäre ich dankbar.
COM Objekte in einem anderem Thread starten
Moderator: Moderatoren
- AUGE_OHR
- Marvin
- Beiträge: 12909
- Registriert: Do, 16. Mär 2006 7:55
- Wohnort: Hamburg
- Hat sich bedankt: 19 Mal
- Danksagung erhalten: 46 Mal
Re: COM Objekte in einem anderem Thread starten
hm ... beide Versionen sind aber nicht die "lates" Updates ...rassekst hat geschrieben:Xbase++ Version : Xbase++ (R) Version 1.90.331
Betriebssystem : Windows XP 05.02 Build 03790 Service Pack 2
YUP das Problem kenne ich von meinen WMPlayer und der v331.rassekst hat geschrieben: oError:args :
-> VALTYPE: C VALUE: ArchiveByFile
-> VALTYPE: C VALUE: \\dc14\HH\HKR\WORK\ARCHIV-AUSTAUSCH\EXP\$EXT_832A498A-0279-D2BB-E011-141575807DDA_2Charta.xml
-> VALTYPE: C VALUE:
oError:canDefault : Y
oError:canRetry : N
oError:canSubstitute: Y
oError:cargo : NIL
oError:description : Unbekannter Fehler
oError:filename : NIL
oError:genCode : NIL
oError:operation : ArchiveByFile
oError:osCode : -2147467259
oError:severity : 2
oError:subCode : 6500
oError:subSystem : Automation
oError:thread : 5
oError:tries : NIL
------------------------------------------------------------------------------
CALLSTACK:
------------------------------------------------------------------------------
Called from XML_QUERRY2(6913)
Called from PFADSCAN:EXECUTE(3131)
Die Methode ArchiveByFile ist definitiv vorhanden. Die Funktion wurde 1-2 Sekunden vorher erfolgreich aufgerufen.
Hat einer schon mal solche Probleme beim ansprechen einer COM?
Die COM ist in VB6 programmiert.
Über jeden Hinweis wäre ich dankbar.
Play -> Pause ->Play -> Pause -> Play -> crash ... keine Methode Play()
auch wenn du keine aktive Subscription hast kannst du deine "original" v331 zur v355 "upgraden".
den v331->SL1 "Patch" bekommst du von der Alaska Website nachdem du dich eingeloggt hast.
der "Patch" wird dann im Xbase++ "Root" Verzeichniss, z.B. c:\ALASKA\XPPW32, gestartet.
danach mit XppLoad überprüfen ob wirklich auf die "neuen" SL1 DLLs zugegriffen wird.
nicht vergessen alle "Source" LIBs ( Express++) neu zu erstellen bevor man seine Xbase++ Applicationen neu erstellt.
für ActiveX ( SL1 ?) gibt es nun einige "undokumentierte" Befehle wie
Code: Alles auswählen
// bei DOSframer auf .F. setzten
// wenn ActiveX im "eigenen" Thread läuft, wie der Codejock Calender, mal auf .F. setzten
********************
o:useGuiThread := .T. / .F.
// bei RTF Fenster auf .F. setzten ( Dialog-Window mit RTF lässt sich kaum verschieben )
// Codejock v13.x Command / Ribbonbar reagiert träge dann .F. setzten
// Codejock v13.x ShortCut reagiert träge dann .F. setzten
// M$ComCtl.OCX Listview ?
*********************
o:UserEvents := .T. / .F.
// wenn hide()/show() nicht richtig funktioniert auf .F. setzen
*********************
o:ReCreateHandle := .T. / .F.
das Thema habe ich versucht mit meinem "Errorsys - Problem" zu schildern.rassekst hat geschrieben:Das Handle wird in einer PUBLIC Variablen gespeichert
meine 3 PUBLIC / PRIVATE kommen bei "einigen" Fehlern, die einen Thread passieren, nicht in der Errorsys an.
( oder es ist nicht "meine" Errorsys" sondern die "original" in XppSYS.DLL )
auch wenn ich die PUBLIC / PRIVATE als Parameter übergebe passiert "manchmal" der Fehler das er zPATH nicht kennt
das einzige was dann noch blieb war
Code: Alles auswählen
Class MyClass FROM AutomationObject,Thread
gruss by OHR
Jimmy
Jimmy
-
- UDF-Programmierer
- Beiträge: 97
- Registriert: Mi, 01. Feb 2006 23:49
- Wohnort: Glauchau
- Kontaktdaten:
Re: COM Objekte in einem anderem Thread starten
Hy Jimmy
Ich danke dir für deine schnelle Antwort und wünsche dir ein gesundes Neues Jahr
Das SL1 habe ich noch nicht. Leider scheint mein Zugang zur xBase++ Website nicht mehr zu funktionieren.
Ich werde ertmal bei Alaska nachfragen.
Ich danke dir für deine schnelle Antwort und wünsche dir ein gesundes Neues Jahr
Das SL1 habe ich noch nicht. Leider scheint mein Zugang zur xBase++ Website nicht mehr zu funktionieren.
Ich werde ertmal bei Alaska nachfragen.
_________________________
Grüße,
Steffen
Grüße,
Steffen