comment décharger la dll - page 11

 
AlexEro >> :

Je suppose qu'il ne s'agit pas nécessairement du testeur MT. Si le testeur MT a une boucle LoadLibrary au début... FreeLibrary à la fin, et que cette boucle est exécutée plusieurs fois, alors Windows se contentera de verrouiller la DLL en mémoire jusqu'à de meilleurs moments et ne pensera pas à faire quoi que ce soit pour la libérer, mais seulement à l'imiter. Ceci est fait dans Windows pour mettre en cache les bibliothèques fréquemment utilisées.


Vous pouvez supposer ce que vous voulez, mais les résultats d'une expérience simple montrent que la dll est déchargée du testeur. Pourquoi toutes ces fictions, ce n'est pas clair. Si vous ne fermez pas le testeur, alors oui, la dll se bloque, mais lorsque vous fermez le testeur, elle est libérée. En tout cas, dans mon cas, oui.

 
HideYourRichess >> :

Vous pouvez supposer n'importe quoi, mais les résultats d'une expérience simple montrent que la dll est déchargée du testeur. Je ne comprends pas pourquoi toutes ces affabulations. Si vous ne fermez pas le testeur, alors oui, la dll se bloque, mais lorsque vous fermez le testeur, elle est libérée. En tout cas, pour moi, c'est le cas.


Oh, j'ai eu une pensée effrayante - peut-être que HideYourRichess est l'employé de MetaQuotes, qui a écrit ce bloc de DLL à télécharger dans MT4 ? Alors il n'y a plus de questions. Si cela fonctionne pour lui, cela DOIT fonctionner pour les autres.

 
Une théorie de conspiration des développeurs MT contre les programmeurs pauvres est de mise.
 

Et je l'ai vérifié moi-même - dans ce cas particulier, une simple DLL jartmailru est détenue par le testeur. Il le tient très fermement, mon têtard, et ne le laissera pas entrer, monstre. Ce qui est, cependant, normal et compréhensible.

Process Explorer (avec le plugin) le décharge bien sûr de toute façon - par hard unload.

Unlocker 1.8.7 ne fonctionne pas du tout ( ?).

À propos, si la bibliothèque utilise COM+ 2.0 et qu'elle est également multithreadée (c'est-à-dire complexe, comme je l'ai déjà dit), Microsoft indique un délai de 10 MINUTES pour son / leur déchargement réel, bien que nous parlions d'une autre fonction de libération :


CoFreeUnusedLibraries ne libère pas immédiatement les DLL qui n'ont pas d'objet actif. Il y a un délai de dix minutes pour les appartements multifonctionnels (MTA) et les appartements neutres (NA). Pour les appartements monofilaires (STA), il n'y a pas de retard. Le délai de dix minutes pour CoFreeUnusedLibraries a pour but d'éviter les situations de concurrence multithread causées par le déchargement d'un composant DLL.

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

 
HideYourRichess >> :

Je veux bien croire que quelque chose ne fonctionne pas ici, mais je n'ai pas exécuté votre dll suspecte. Je suis trop paresseux pour le compiler de votre VC8.0 à VC6.0. Je suis aussi trop paresseux pour vérifier les versions des crt que vous utilisez pour la compatibilité. Vous pouvez voir dans le phare habituel que vous avez une dll se liant à msvcr80, mais l'exemple utilise msvcrt. Une petite chose, mais pas agréable. Etc.

Seulement ce fait n'est pas pertinent, M. Glissant.

Avec le script - tout est déchargé.

Oups... J'ai encore été embarrassé :-).

Mais c'est bon.

C'est relatif maintenant :

HideYourRichess >> :

On peut tout supposer, mais les résultats d'une expérience simple montrent que la dll du testeur est déchargée. Pourquoi toutes ces fictions, je ne comprends pas. Si vous ne fermez pas le testeur, la dll sera suspendue, mais après avoir fermé le testeur, elle est libérée. En tout cas, c'est le cas pour moi.

Et voilà.

L'homme a atteint les tests.

Bienvenue dans le monde réel !

.

Vérifié la fermeture du panneau du testeur.

Alors, combien de choses intelligentes sont programmées dans MetaTrader !

C'est vrai, sans tenir compte du cycle de développement de ces mêmes Dlls - mais ce sont les petites choses.

Mais il est plus facile de fermer tout MetaTrader en fonctionnement :-).

.

Le plus important : vous ne devez pas présenter la fermeture du panel de testeurs comme un fait et un argument évident,

bien que votre talent de chercheur dans les cas où vous devez "abattre" votre adversaire,

que vous avez sans aucun doute. Combien de subordonnés diriez-vous que vous avez en ce moment ?

.

La phrase dans l'original devrait ressembler à ceci :

Le testeur maintiendra la Dll jusqu'à ce que le metatrader se ferme-

à moins que vous ne fassiez un geste non évident et que vous fermiez le panneau du testeur :-).

.

En résumé : si vous ne fermez pas le panneau du testeur avec votre Dll- il a des bogues comme tout le monde ! :-P

 

Bien entendu, Process Explorer (avec le plugin) le décharge toujours, même avec le testeur - par un déchargement dur.

Redémarrer le testeur après avoir déchargé la DLL via PrExpl - aucun problème. C'est-à-dire que, personnellement, je préférerais classer cet inconvénient (appelons-le ainsi) comme un pépin de testeur, plutôt que comme une fonctionnalité. Les personnes sérieuses créeront leur DLL dans une fenêtre différente, pourquoi sauteraient-elles autour de différentes fenêtres, les fermeraient-elles, les ouvriraient-elles ?

 
AlexEro >> :

Et je l'ai vérifié moi-même - dans ce cas particulier, une simple DLL de jartmailru est détenue par le testeur. Le testeur le tient très fermement et ne le laisse pas entrer, monstre. Mais c'est normal et compréhensible.


A qui la faute ? Je pense que c'est la faute du programmeur. Parce qu'une autre dll, d'un autre programmeur, ne fait pas ça.

 
HideYourRichess >> :

>> A qui la faute ? Je pense que c'est un programmeur malhonnête.

Qu'est-ce que tu veux dire, mon oncle ? Il est détenu par MT - MQ's Tester, qui ne le décharge pas de FreeLibrary. Pourquoi tu chies sur ta société ? Vous avez écrit ce bug vous-même, et maintenant vous nous le demandez sur le forum ?

 

(avec une voix d'enfant, comme dans les films de pionniers de Staline des années 1940-1950)

Les gars, aidons MetaQuotes ! Il sera plus facile pour nous d'écrire des programmes MQL4 ! Disons au programmeur principal de MetaQuotes, nommé HideYourRichess, comment les DLLs sont installées, chargées, déchargées et exécutées ! On y va ? А ?! Je l'ai soumis à un vote. Ceux qui sont pour, veuillez lever la main et le service de messagerie de Windows.

 

Crétin.