nugent と vb.net を使用して MQL4 で使用する dll をまとめていますが、これまでのところかなりうまくいっています。
私のdllでは、関数が呼び出されるたびにチェックし続ける必要がないように、条件が満たされたときにフラグを設定しています。これは正常に動作しますが、チャートから dll を作成した EA を削除しても、フラグが設定されたままメモリ内にあることに気付きました。
フラグは、モジュール内の関数内で static として宣言されています。
ターミナルを閉じてから再度開くと、フラグが消えてプロセスが再開されます。
メモリから dll を削除し、EA の削除時にそのリソース (静的変数) を解放するにはどうすればよいですか?
deinit で関数を呼び出す必要があるのではないかと考えていますが、DLL 自体を「殺す」という VB.net の例が見つかりません。
どんなアイデアでも大歓迎です。
スティーブ
更新:私はちょうど考えていました。おそらく、チャートから EA を削除すると、dll が終了するはずがありませんか? 設計上そうなっているのでしょうか?もしそうなら、フラグを手動でfalseに設定するだけでいいと思います。
しかし、EA をチャートに再度追加すると、dll の別のインスタンスが存在することになるのではないでしょうか?
誰かが決定的な答えを持っていれば、それは素晴らしいことです。