Свойство «Создано» объекта ActiveX всегда ложно - PullRequest
0 голосов
/ 07 июня 2018

Я написал что-то простое, как показано ниже:

//...
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, свойство "Created" для "Middleware" имеет значение true, как показано ниже enter image description here

Однако при выполнении программа всегда перехватывается циклом while, который проверяет, имеет ли свойство «Создано» значение false.Фрагмент кода находится в той же функции, фактически, как конструктор, и выполняется одним потоком.Это просто не имеет никакого смысла для меня.

Наблюдение: если точка останова вставляется перед циклом while, и один ждет достаточно долго, прежде чем продолжить, свойство «Создано» становится истинным, и выполнение просто продолжается без прерывания в цикле while.

1 Ответ

0 голосов
/ 08 июня 2018

Что, вероятно, происходит здесь, вы блокируете поток, в котором происходит создание. Просто подождите асинхронно, и все будет в порядке.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...