当从MetaTrader Terminal 4中的静态方法加载时,为什么表单会冻结?

时间:2016-12-18 15:21:22

标签: c# multithreading mt4

我在.NET DLL中有以下 class ,它导出一个函数 Initialize()

public class Class1
{
    public  static Indicator a = null;
    private static int       k = 0;

    [DllExport(      "Add", CallingConvention = CallingConvention.StdCall )]
    public static int Add( int left, int right )
    {
        k = k + 1;
        return k;
    }

    [DllExport(       "Initialize", CallingConvention = CallingConvention.StdCall )]         
    public static void OnStartUp1( )
    {
        try
        {
            Thread.CurrentThread.SetApartmentState( ApartmentState.STA );
            a = new Indicator(); 
            a.Init(); 
        }
        catch ( Exception e )
        {
            MessageBox.Show( e.ToString() );
        }
    }
}

当我从外部Windows窗体.NET应用程序调用此方法时,它正在工作,并且由类型Indicator创建的表单是响应和加载的。

但是当我从另一个名为MT4(MetaTrader Terminal 4 )的应用程序中调用它时,它的加载效果不佳而且没有响应,看起来像冻结。

0 个答案:

没有答案