2013-03-02 40 views
0

我使用nugent和vb.net将一个dll与MQL4一起使用,目前它还算不错。使用Nugent和VB.net的MQL4 DLL

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

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

如果我关闭终端,然后再次打开,标志消失,过程重新开始。

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

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

任何想法将不胜感激。

史蒂夫

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

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

如果有人有确定的答案,虽然这将是伟大的。

回答

0

要在MQL4中使用的DLL公开的功能可以扩展由MT4提供的功能。从我所了解的DLL中,他们不提供数据保留。就像你的情况一样,当你在MT4代码中调用DLL的函数时,数据在该调用期间保留。当您重新启动EA时,数据消失,一切都恢复为默认值。

希望这会有所帮助。