0

我正在使用 nugent 和 vb.net 将一个用于 MQL4 的 dll 放在一起,到目前为止它运行良好。

在我的 dll 中,我在满足条件时设置一个标志,这样我就不必在每次调用函数时都进行检查。这工作正常,但我意识到即使我从图表中删除了创建 dll 的 EA,该标志仍​​然设置在内存中。

该标志在模块中的函数内声明为静态。

如果我关闭终端然后再次打开它,则标志已经消失并且该过程再次开始。

如何从内存中删除 dll 并在删除 EA 时释放它的资源(静态变量)?

我在想它可能应该在 deinit 中调用一个函数,但我找不到任何 VB.net 的 dll '杀死'本身的例子。

任何想法将不胜感激。

史蒂夫

更新:我只是有一个想法。也许 dll 不应该在从图表中删除 EA 时结束?会不会是这样设计的?如果是这样,我猜我可以手动将标志设置为 false。

但这是否意味着如果我再次将 EA 添加到图表中,将会有另一个 dll 实例?

如果有人有明确的答案,那就太好了。

4

1 回答 1

0

MQL4 中使用的 DLL 公开了可以扩展 MT4 提供的功能的函数。根据我对 DLL 的了解,它们不提供数据保留。例如,在您的情况下,当您在 MT4 代码中调用 DLL 的函数时,数据会在该调用期间保留。当您重新启动 EA 时,数据消失了,一切都恢复为默认值。

希望这可以帮助。

于 2013-03-27T14:34:19.663 回答