DLLをアンロードする方法 - ページ 11

 
AlexEro >> :

必ずしもMTテスターがどうのこうのということではないと推察します。もし、MTテスターが何らかの方法でLoadLibraryループを最初に持っている場合 ...最後にFreeLibraryを実行し、このループを何度も実行すると、Windowsはより良いタイミングまでDLLをメモリに固定するだけで、それを解放するために何かしようとは思わず、ただ真似をするだけです。これはWindowsで、頻繁に使用するライブラリをキャッシュするために行われます。


何を想定してもいいのですが、簡単な実験の結果、テスターからDLLが解除されることがわかりました。なぜ、このようなフィクションばかりなのか、それは不明です。テスターを閉じない場合は、はい、DLLはハングアップしますが、テスターを閉じると、それは解放されます。少なくとも私の場合はそうです。

 
HideYourRichess >> :

何を想定してもいいのですが、簡単な実験の結果、テスターからDLLが解除されることがわかりました。なぜこんな捏造ばかりなのか理解できない。テスターを閉じない場合は、はい、DLLはハングアップしますが、テスターを閉じると、それは解放されます。少なくとも、私にとってはそうなのです。


あ、怖いことを思いつきました。もしかして、HideYourRichessはMetaQuotesの社員で、MT4にDLLをアップロードするブロックを書いた人なのでしょうか?そうすれば、もう質問はありません。もし彼がうまくいくなら、他の人にもうまくいくに違いない。

 
貧乏プログラマーに対するMT開発者の陰謀説が浮上。
 

そして、私自身も確認しました。この特別なケースでは、単純な jartmailru DLL がテスターによって保持されています。おたまじゃくし、しっかり持っていて、入れてくれませんよ、魔人さん。しかし、それは普通のことであり、理解できることです。

プロセスエクスプローラー(プラグイン付き)は、もちろんハードアンロードで、とにかくアンロードします。

Unlocker 1.8.7が全く動作しない(?)

ところで、ライブラリはCOM+ 2.0を使用し、またマルチスレッド(それは私が前に言ったように、複雑である)、その後、マイクロソフトは、その/それらの本当のアンロードのための10分の遅延を示して いる場合、我々は別のリリース関数について話しているけれど。


CoFreeUnusedLibrariesは、アクティブなオブジェクトを持たないDLLを即座に解放するものではありません。マルチスレッドアパートメント(MTA)とニュートラルアパートメント(NA)については、10分程度の遅延が発生します。シングルスレッドアパートメント(STA)については、遅延はありません。CoFreeUnusedLibrariesの 10分間の遅延は、コンポーネントDLLのアンロードによって引き起こされるマルチスレッドの競合状態を回避するためのものである。

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

 
HideYourRichess >> :

私は進んで、何かがそこで動作していないことを信じていますが、私はあなたの疑わしいDLLを実行しませんでした。あなたのVC8.0からVC6.0にコンパイルするのが億劫なのです。また、使用するcrtのバージョンを確認して互換性を確認するのも億劫です。いつものヘッドランプで、msvcr80にリンクしているDLLがあるのがわかりますが、例ではmsvcrtを使っています。些細なことですが、いい加減なことです。などなど。

この事実だけは関係ないですよ、スリッパさん。

スクリプトで - すべてがアンロードされます。

おっと...また恥をかいてしまった(^^;)。

でも、いいんです。

今は相対的なものです。

HideYourRichess>>:

何でも想定できるのですが、簡単な実験の結果、テスターのDLLはアンロードされていることがわかりました。なぜ、このようなフィクションばかりなのか、私には理解できない。テスターを閉じないと、DLLはハングアップしますが、テスターを閉じると解放されます。少なくとも私はそう思っています。

これでよしとする。

その男はテストにたどり着いた。

現実の世界へようこそ

.

テスターのパネルの閉まり具合を確認。

では、MetaTraderにはどれだけ賢いものがプログラムされているのでしょうか!

確かに、これらのDllの開発サイクルを考慮しなければなりませんが、それは些細なことです。

でも、運用中のMetaTrader全体を閉じる方が簡単です :-)。

.

一番大事なこと、それはテスターのパネルを閉じることを当たり前の事実、主張として前面に出すことではありません。

研究者としての才能は、相手を "倒す "必要がある場合にも発揮されるのですね。

を、ぜひご覧ください。今、部下は何人いると思いますか?

.

原文のフレーズはこう聞こえるはずだ。

テスターはメタトレーダーが終了するまでDllを保持します。

テスターパネルを閉じるという当たり前のことをしない限りは:-)。

.

結論:Dllでテスターパネルを閉じないと、他の人と同じようにバグがあります。:-P

 

プロセスエクスプローラー(プラグイン付き)は、もちろんテスターでもアンロードされます - ハードアンロードで。

PrExplでDLLをアンロードした後にテスターを再起動すると、問題なく動作します。つまり、個人的には、この不便さ(そう呼ぶことにしましょう)は、機能ではなく、テスターの不具合に分類したいのです。真面目な人はDLLを別ウィンドウで作るだろうし、なんで別ウィンドウを閉じたり開いたりで飛び回るんだろう?

 
AlexEro >> :

そして、私自身も確認しました。この特別なケースでは、jartmailruによる単純なDLLがテスターに保持されています。テスターはとても強く握っていて、中に入れてくれません、凶暴です。しかし、それは普通のことであり、理解できることです。


誰のせいかというと、プログラマーのせいだと思うんです。なぜなら、別のプログラマーによる別のDLLでは、それができないからです。

 
HideYourRichess >> :

>> 誰のせいかというと、プログラマーが曲がっているのだと思います。

どういうことですか、おじさん?MT - MQ's Testerが保有しており、FreeLibraryからアンロードされることはない。なんで会社のことボロクソに言うんだ?このバグを自分で書いておいて、今更フォーラムで聞くのか?

 

(1940年代から1950年代のスターリンの開拓者映画に出てくるような、子供の声で)

みんな、MetaQuotesを助けよう!MQL4プログラムを書くのが簡単になる!HideYourRichessというMetaQuotesのリードプログラマーに、DLLのインストール、ロード、アンロード、実行の方法を教えてあげよう!。そうしましょうか?А?!投票にかけました。賛成の方は挙手を願います。

 

マヌケ。