我正在使用nugent和vb.net创建一个用于MQL4的动态链接库,到目前为止运行得还不错。
在我的dll中,当满足某个条件时,我会设置一个标志,这样我就不必在每次调用函数时都进行检查。这工作得很好,但我意识到,即使我从图表中删除了创建dll的EA,该标志仍保持设置并在内存中。
该标志在模块中的函数中声明为静态。
如果我关闭终端,然后再次打开它,标志已经消失,该过程再次开始。
如何从内存中删除dll并在删除EA时释放其资源(静态变量)?
我在想,也许它应该在deinit中调用一个函数,但我找不到任何dll“终止”本身的VB.net示例。
任何想法都将不胜感激。
史蒂夫
更新:我有一个想法。也许dll不应该在从图表中删除EA时结束?会不会是这样的设计呢?如果是这样,我想我可以手动将标志设置为false。
但是,这是否意味着如果我再次将EA添加到图表中,就会有dll的另一个实例?
不过,如果有人有一个明确的答案,那就太好了。
发布于 2013-03-27 14:34:20
要在MQL4中使用的DLL公开可以扩展MT4提供的功能的函数。根据我对DLL的理解,它们不提供数据保留。就像在您的示例中,当您在MT4代码中调用DLL的函数时,数据将在调用期间保留。当您重新启动EA时,数据会消失,所有内容都会恢复为默认值。
希望这能有所帮助。
https://stackoverflow.com/questions/15170411
复制相似问题