wie man die DLL entlädt - Seite 11

 
AlexEro >> :

Ich gehe davon aus, dass es nicht unbedingt um den MT-Tester geht. Wenn der MT-Tester irgendwie eine LoadLibrary-Schleife am Anfang hat ... FreeLibrary am Ende, und diese Schleife wird viele Male ausgeführt, dann sperrt Windows die DLL im Speicher bis zu besseren Zeiten und denkt nicht daran, etwas zu tun, um sie freizugeben, sondern imitiert sie nur. Dies geschieht in Windows, um häufig verwendete Bibliotheken zwischenzuspeichern.


Man kann davon ausgehen, was man will, aber die Ergebnisse eines einfachen Experiments zeigen, dass die DLL vom Prüfgerät entladen wird. Warum all diese Fiktionen, es ist nicht klar. Wenn Sie den Tester nicht schließen, bleibt die DLL zwar hängen, aber wenn Sie den Tester schließen, wird sie freigegeben. Zumindest in meinem Fall ist das so.

 
HideYourRichess >> :

Man kann alles Mögliche vermuten, aber die Ergebnisse eines einfachen Experiments zeigen, dass die DLL vom Prüfgerät entladen wird. Ich verstehe nicht, warum diese ganzen Erfindungen. Wenn Sie das Prüfprogramm nicht schließen, bleibt die DLL hängen, aber wenn Sie das Prüfprogramm schließen, wird sie freigegeben. Zumindest für mich ist das so.


Oh, ich hatte einen beängstigenden Gedanken - vielleicht ist HideYourRichess der Mitarbeiter von MetaQuotes, der diesen Block von DLL's Upload in MT4 geschrieben hat? Dann gibt es keine Fragen mehr. Wenn es bei ihm funktioniert, MUSS es auch bei anderen funktionieren.

 
Eine Verschwörungstheorie der MT-Entwickler gegen die armen Programmierer ist angesagt.
 

Und ich habe es selbst überprüft - in diesem speziellen Fall ist eine einfache jartmailru-DLL im Besitz des Testers. Sie hält sie ganz fest, meine Kaulquappe, und lässt sie nicht rein, du Unhold. Das ist jedoch normal und verständlich.

Process Explorer (mit Plugin) entlädt es natürlich trotzdem - durch hartes Entladen.

Unlocker 1.8.7 funktioniert überhaupt nicht (?).

Übrigens, wenn die Bibliothek verwendet COM+ 2.0, und auch multithreaded (das ist komplex, wie ich schon sagte), dann Microsoft zeigt eine Verzögerung von 10 Minuten für seine / sie realen Entladen, obwohl wir über eine andere Release-Funktion sprechen:


CoFreeUnusedLibraries gibt DLLs, die kein aktives Objekt haben, nicht sofort frei. Bei Multithreading-Wohnungen (MTAs) und neutralen Wohnungen (NAs) gibt es eine zehnminütige Verzögerung. Bei Single-Thread-Apartments (STAs) gibt es keine Verzögerung. Die zehnminütige Verzögerung für CoFreeUnusedLibraries dient dazu, durch das Entladen einer Komponenten-DLL verursachte Multithread-Race-Bedingungen zu vermeiden.

http://support.microsoft.com/kb/301357

 
HideYourRichess >> :

Ich glaube gerne, dass dort etwas nicht funktioniert, aber ich habe Ihre verdächtige dll nicht ausgeführt. Ich bin zu faul, es von Ihrem VC8.0 nach VC6.0 zu kompilieren. Ich bin auch zu faul, die Versionen der von Ihnen verwendeten crt auf Kompatibilität zu prüfen. Sie können im üblichen Scheinwerfer sehen, dass Sie eine DLL haben, die mit msvcr80 verknüpft ist, aber das Beispiel verwendet msvcrt. Eine Kleinigkeit, aber nicht schön. Etc.

Nur diese Tatsache ist irrelevant, Herr Slippery.

Mit dem Skript wird alles entladen.

Hoppla... wieder in Verlegenheit geraten :-).

Aber das ist in Ordnung.

Das ist jetzt relativ:

HideYourRichess >> :

Man kann alles Mögliche vermuten, aber die Ergebnisse eines einfachen Experiments zeigen, dass die dll des Testers unbelastet ist. Warum all diese Fiktionen, das verstehe ich nicht. Wenn Sie den Tester nicht schließen, bleibt die DLL hängen, aber nach dem Schließen des Testers ist sie wieder frei. Zumindest habe ich das.

Das war's.

Der Mann hat die Tests erreicht.

Willkommen in der realen Welt!

.

Überprüfen Sie das Schließen des Prüfgeräts.

Wie viele schlaue Dinge sind also im MetaTrader programmiert!

Stimmt, ohne den Entwicklungszyklus eben dieser Dlls zu berücksichtigen - aber das sind die kleinen Dinge.

Aber es ist einfacher, den gesamten MetaTrader im Betrieb zu schließen :-).

.

Das Wichtigste: Sie müssen die Schließung des Prüfergremiums nicht als offensichtliche Tatsache und Argument vorbringen,

obwohl Ihr Talent als Forscher in Fällen, in denen Sie Ihren Gegner "ausschalten" müssen,

haben Sie zweifelsohne. Wie viele Untergebene, würden Sie sagen, haben Sie im Moment?

.

Die Formulierung im Original sollte so klingen:

Der Tester hält die Dll, bis der Metatrader geschlossen wird.

es sei denn, Sie machen eine nicht offensichtliche Bewegung und schließen das Testerfeld :-).

.

Fazit: Wenn Sie das Tester-Panel nicht mit Ihrer Dll schließen, hat es Bugs wie alle anderen auch! :-P

 

Process Explorer (mit Plugin) entlädt es natürlich auch mit dem Tester - durch hartes Entladen.

Neustart des Testers nach dem Entladen der DLL über PrExpl - kein Problem. Das heißt, ich persönlich würde diese Unannehmlichkeit (nennen wir sie mal so) eher als Fehler des Testers denn als Funktion einstufen. Seriöse Leute werden ihre DLL in einem anderen Fenster erstellen, warum sollten sie zwischen verschiedenen Fenstern hin und her springen, sie schließen, sie öffnen?

 
AlexEro >> :

Und ich habe es selbst überprüft - in diesem speziellen Fall ist eine einfache DLL von jartmailru im Besitz des Testers. Der Prüfer hält es sehr fest und lässt es nicht hinein, Unhold. Aber das ist normal und verständlich.


Ich denke, es ist die Schuld des Programmierers. Denn eine andere DLL, die von einem anderen Programmierer stammt, tut das nicht.

 
HideYourRichess >> :

>> Ich glaube, das ist die Schuld eines korrupten Programmierers.

Was meinst du, Onkel? Sie wird von MT - MQ's Tester gehalten, der sie nicht aus FreeLibrary entlädt. Warum scheißen Sie auf Ihr Unternehmen? Sie haben diesen Fehler selbst geschrieben, und jetzt fragen Sie uns im Forum?

 

(mit Kinderstimme, wie in Stalins Pionierfilmen aus den 1940er-1950er Jahren)

Leute, lasst uns MetaQuotes helfen! Es wird für uns einfacher sein, MQL4-Programme zu schreiben! Lasst uns dem Hauptprogrammierer von MetaQuotes, namens HideYourRichess, sagen, wie DLLs installiert, geladen, entladen und ausgeführt werden! Sollen wir? А?! Ich lasse darüber abstimmen. Diejenigen, die dafür sind, heben bitte die Hand und den Windows-Nachrichtendienst.

 

Schwachkopf.