ERLEDIGT
NEIN
NEIN
ANTWORTEN
3
3
ZUGRIFFE
1165
1165
EMPFEHLEN
-
15.04.10 22:46 #1
- Registriert seit
- Mar 2007
- Beiträge
- 90
Hallo zusammen!
Ich habe für meine Firma ein größeres Programm geschrieben. In diesem Programm sind einige Funktionen in Plugins ausgelagert. Die Plugins sind im Prinzip DLL's die ich in einem speziellen Verzeichnis ablege. Bei Start sucht das Programm alle in diesem befindlichen Dateien (Plugins). Jede gefundene Datei wird hierbei dynamisch geladen und es wird das Vorhandensein einer bestimmten Funktion abgeprüft. Ist diese Funktion vorhanden wird sie aufgerufen. Die Funktion gibt ein Zeichenarray - keinen String (funktioniert in DLL's nicht) - zurück, welches Informationen zum Plugin enthält, die für den weiteren Programmablauf wichtig sind.
Das ganze funktioniert auch recht ordentlich. Leider gibt es in letzter Zeit bei einigen Anwendern Probleme bei dieser Abfrage. Normalerweise dauert die Abfrage pro Plugin zwischen 10-30ms (habe ich durch eine eigebaute Debuggerroutine ermittelt). Bei derzeit 10 Plugins ist diese Prozedur also in ca. 500ms erledigt. Bei einigen Usern dauerte das aber bis zu 30s und in einigen ganz wenigen (3 von 100) Fällen bleibt das Programm an dieser Stelle komplett hängen und muß mit dem Taskmanager beendet werden. Wenn das Programm beendet und danach erneut gestartet wird funktioniert alles perfekt und die Ladezeiten sind wieder völlig normal. Nach einem Windowsneustart geht der Sch... wieder los.
Bei manchen Usern hat eine Restaurierung des Systems zu einem Widerherstellungspunkt geholfen. Das Programm wird schon länger eingesetzt, der Fehler ist aber relativ neu. Auf meinem Entwicklungsrechner tritt der Fehler nicht auf bzw. die Verzögerung beim ersten Programmstart ist sehr kurz. Auch auf anderen PC bei mir mit verschiedenen Systemen von W98 bis Windows 7 tritt dieser Fehler nicht auf. Selbst auf einem Versuchssystem mit Linux und Wine läuft alles einwandfrei.
Hat jemand da eine Idee wo man da suchen könnte. Auf den PC's (i.d.R. Firmenlaptops) läuft XP und Servicepack 2. Könnte das mit dem DLL Caching von Windows oder der Desktopfirewall (McAfee) zusammenhängen ? Die PC's werden komplett durch unsere IT betreut, d.h. Updates, Patches etc. werden automatisch eingespielt sobald man sich mit dem Firmennetz verbindet. Unglücklichereise kann man nicht richtig nachvollziehen was da eingespielt wird - die meisten User wären damit aber auch überfordert.
Die Probleme treten meistens nach solchen Updates auf.
Hat jemand schon ähnliche Probleme gehabt. Bin für jeden Hinweis dankbar. Bekomme bald ne Meise.
Gruß Twinsetter
-
Könnte es sein, das bei einem solchen Update-Vorgang, bei dem die dlls ersetzt werden sollen, gerade die eine oder andere geladen ist und deswegen nicht überschrieben werden kann?
Vielleicht geht dabei was kaputt?
Lösung wäre hier, vor einem Update sicher zu stellen, dass die 'alten' dlls erst gelöscht werden und geprüft wird, ob das auch wirklich geklappt hat.
-
16.04.10 12:38 #3
- Registriert seit
- Mar 2007
- Beiträge
- 90
Danke für Deine Antwort.
Ich habe aber den Eindruck, daß da bei Dir was nicht richtig angekommen ist. Bei meinem Programm wird nichts geupdatet. Es geht hier um das Einspielen von allgemeinen Systemupdates durch unsere IT, die haben aber primär erst mal nichts mit meinem Programm zu tun.
Mein Programm schreibt an dieser Stelle auch nichts. Es wird lediglich eine ganz simple DLL-Funktion aufgerufen, die Zeichenarrays zurückgibt.
Hier mal der Code der Funktion
Code :1 2 3 4 5 6 7 8 9
function ModulInfo:TInfo;stdcall; begin StrPCopy(Result.DateiName,DateiName); StrPCopy(Result.ModulName,FormularTitel[1]); StrPCopy(Result.IDStr,IDStr); Result.TypID:=TypID; StrPCopy(Result.Copyright,Copyright); StrPCopy(Result.Version,Version); end;
Die Plugins werden ausschließlich von dem Programm benutzt. Es erfolgt also kein Zugriff durch andere Programme.
Gruß Twinsetter
-
Vielleicht solltest du jeden DLL-Testaufruf in einer Art Timeout-Routine kapseln.
Etwa in einer while - Schleife, die beendet wird, wenn entweder der Funktionsaufruf gelungen ist oder aber spätestens nach n Millisekunden.
Wenn du das ganze noch mit einem Logging versiehst (Timeouts werden protokolliert in der Art xy.dll timeout ) könnte es dir helfen, das Problem zu lösen oder zumindest einzugrenzen.
Ähnliche Themen
-
[IE7 Problem] Problem mit ul/li Höhen im IE7 bei Verwendung eines vertikalen Menüs
Von josDesign im Forum CSSAntworten: 0Letzter Beitrag: 11.01.11, 21:40 -
Problem: Flash MX (7.1) exportiert meine Fla nicht mehr - dringendes Problem
Von Lukasz im Forum Flash PlattformAntworten: 4Letzter Beitrag: 22.03.06, 20:50 -
Problem mit hover- background ändern & Problem bei Reload
Von ollioollio im Forum CSSAntworten: 0Letzter Beitrag: 06.10.04, 14:03 -
PROBLEM! Pinnacle 2 GB Begrenzung Windows 2000 DC 50 PROBLEM!
Von hennym im Forum Videoschnitt, Videotechnik & -produktionAntworten: 6Letzter Beitrag: 17.09.03, 22:09 -
Problem mit PopUp (Ja ich weiss Suche benutzten, hab ein ganz anderes Problem)
Von killkrog im Forum Javascript & AjaxAntworten: 6Letzter Beitrag: 13.06.02, 12:29





Zitieren
Login




