"创建" ActiveX对象的属性始终为false

时间:2018-06-07 09:45:26

标签: c#-4.0 activex

我写了一些简单如下的内容:

//...
this.Middleware = new AxMELFARXMLib.AxMelfaRxM();
        ((System.ComponentModel.ISupportInitialize)(this.Middleware)).BeginInit();
        this.Middleware.Name = "Middleware";
        this.Middleware.OcxState = ((AxHost.State)(resources.GetObject("Middleware.OcxState")));
        this.Middleware.MsgRecvEvent += new System.EventHandler(this.Message_receiv_event_handler);
        this.Middleware.Visible = false;
        ((System.ComponentModel.ISupportInitialize)(this.Middleware)).EndInit();
        this.Middleware.CreateControl();
        while(Middleware.Created == false)
        {

        }

在while循环之前,如果被VS调试器窥视,那么"创建" "中间件"的属性是的,如下所示 enter image description here

但是,执行时,程序总是被while循环捕获,它会检查" Created"财产是有价值的。代码片段在同一个函数中,实际上是构造函数,由单个线程执行。这对我没有任何意义。

观察:如果在while循环之前插入断点,并且在继续之前等待足够长的时间,那么"创建"属性变为true,执行只是继续而不会陷入while循环。

1 个答案:

答案 0 :(得分:0)

这里可能发生的是你正在阻止创建发生的线程。只是等待异步,你应该没事。