Я полагаю, InvokeRequired
не возвращает соответствующие значения, пока не будет создан дескриптор окна. Где в вашем конструкторе это называется?
Просто для теста, если вы сначала вызовите Control.Handle, например:
IntPtr handle = Handle;
в верхней части вашего Populate
метода, это помогает? Я не предлагаю это как постоянное исправление, но оно будет работать с ним, если вы взломаете отладчик - он будет иметь доступ к свойству Handle
, чтобы отобразить его, и это заставит создать дескриптор. ..
В каком потоке работает этот конструктор по сравнению с потоком, ответственным за его родительское окно? Все элементы управления в конкретном окне должны использовать один и тот же поток пользовательского интерфейса.