Короче говоря, это - то, как я узнал о SAP:
я был на нескольких курсах SAP и не-SAP.
CreateChildControls вызывается всякий раз, когда инфраструктура (или вы сами) вызывает метод EnsureChildControls. Этот метод следует вызывать всякий раз, когда вам нужны дочерние элементы управления.
В случае фреймворка он хочет установить опубликованные значения между OnInit и OnLoad (чтобы вы могли получить доступ к значениям во время OnLoad). Поскольку для этого ему нужны элементы управления, он вызовет для вас EnsureChildControls.
Если обратная передача отсутствует, также нет необходимости устанавливать значения, и, следовательно, вызов EnsureChildControls будет ждать до тех пор, пока платформа не выполнит нужен контроль. Это происходит между OnLoad и OnPreRender.
Этого не должно происходить, вы абсолютно уверены? Нет ли других запущенных потоков, из-за которых может показаться, что порядок изменился?
В конце концов, это всего лишь ASP.NET, программа, выполняемая компьютером (что означает, что она всегда должна делать одно и то же, в отличие от человека).