我正在使用nugent和vb.net将一个dll与MQL4一起使用,到目前为止它已经相当不错了。
在我的dll中,我在条件满足时设置了一个标志,这样我就不必每次调用函数时都要检查。这工作正常,但我意识到即使我从图表中删除了创建dll的EA,该标志仍然保留在内存中。
该标志在模块中的函数内声明为static。
如果我关闭终端然后再次打开它,标志就会消失,然后重新开始。
如何从内存中删除dll并在删除EA时释放它的资源(静态变量)?
我认为应该在deinit中调用一个函数但是我找不到任何一个dll'kill'本身的VB.net示例。
非常感谢任何想法。
史蒂夫
更新:我刚想到了。也许dll不应该从图表中删除EA结束?这可能是设计的吗?如果是这样,我可以手动将标志设置为假。
但这不意味着如果我再次将EA添加到图表中,那么还会有另一个dll实例吗?
如果有人有明确的答案,那就太好了。
答案 0 :(得分:0)
要在MQL4中使用的DLL公开可以扩展MT4提供的功能的函数。根据我对DLL的理解,他们不提供数据保留。就像在您的情况下,当您在MT4代码中调用DLL的函数时,数据将在该调用期间保留。当您重新启动EA时,数据将消失,所有内容都将恢复为默认值。
希望这有帮助。