我写了一些简单如下的内容:
//...
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调试器窥视,那么"创建" "中间件"的属性是的,如下所示
但是,执行时,程序总是被while循环捕获,它会检查" Created"财产是有价值的。代码片段在同一个函数中,实际上是构造函数,由单个线程执行。这对我没有任何意义。
观察:如果在while循环之前插入断点,并且在继续之前等待足够长的时间,那么"创建"属性变为true,执行只是继续而不会陷入while循环。
答案 0 :(得分:0)
这里可能发生的是你正在阻止创建发生的线程。只是等待异步,你应该没事。