Освобождение ресурсов и dll-файла

 
Написал к советнику на МТ4 отдельную DLL. При запуске советника он её использует, но при откреплении советника от графика освобождение dll-файла не происходит до перезагрузки терминала, то есть её нельзя даже удалить, так как она якобы используется. Есть ли возможность "отпустить" dll-файл программным путём без перезагрузки терминала? Всем заранее спасибо за помощь!
 
Максим Пругло:
Написал к советнику на МТ4 отдельную DLL. При запуске советника он её использует, но при откреплении советника от графика освобождение dll-файла не происходит до перезагрузки терминала, то есть её нельзя даже удалить, так как она якобы используется. Есть ли возможность "отпустить" dll-файл программным путём без перезагрузки терминала? Всем заранее спасибо за помощь!

покажите код DLL (хотя-бы основные выдержки, DLL-main и прочая инициализация/деинит)

чтобы разобраться каким образом инкрементирован счётчик ссылок на неё.

 

у меня код dll на C#, там нет деинит и DLL-main


using System;
using System.Text;
using RGiesecke.DllExport;
using System.Runtime.InteropServices;
using System.Collections.Generic;
using System.Net;
using HtmlAgilityPack;
using System.Linq;
using System.Text.RegularExpressions;
using System.Threading;
using System.Windows.Forms;
using System.IO;


namespace Test2
{
    public static class Test22
    {
        private static Thread thr;
        private static string newsTime = "";
        private static bool waiting = false;

        [DllExport("GetNewsTime", CallingConvention = CallingConvention.StdCall)]
        public static bool GetNewsTime([In, Out, MarshalAs(UnmanagedType.LPWStr)] StringBuilder str)
        {
            bool isNewsPrepared = procCreator();
            if (isNewsPrepared) str.Append(newsTime);
            return isNewsPrepared;
        }

................... и т.д...


 
Максим Пругло:

у меня код dll на C#, там нет деинит и DLL-main



тут конечно нужен вызов специалиста по шарпу - шарпея


но пока он в пути, могу посоветовать присмотреться к объекту Thread.
Где-то вы его сам-на-себя сослали. Может быть мутекс щёлкнули

 

вариантов много почему не выгружается .dll , высока вероятность, что проблема в самом экспорте с помощью библиотеки UnmanagedExports 

я не разбирался, думаю, что будет очень затратно по времени

тут, имхо 2 варианта, пишите на MQL5 - вообще все будет работать из коробки, или попробуйте использовать аналогичную UnmanagedExports библиотеку, которая будет с исходниками на гитхабе