Особое правило заключается в том, что нельзя вызывать функцию Windows API, которая использует дескриптор окна.Не совсем очевидно, будет ли использование свойства или вызова метода элемента управления таким вызовом API.В документах MSDN перечислены только 4 из них, как всегда безопасных для использования: InvokeRequired, Invoke (), BeginInvoke () и CreateGraphics ().
Но да, иногда значение свойства доступно и не требует APIвызов.Свойство Text является хорошим примером.Он кэшируется, потому что используется так часто. Чтение Свойство Text не создает исключение, вы просто получаете кэшированное значение.Но при записи свойство Text переходит в kaboom, для обновления текста на экране требуется вызов API.ListView.VirtualSize работает точно так же.
Вы не получите исключение, но оно все еще не кошерное.В конце концов, поток пользовательского интерфейса может также изменить свойство Text через микросекунду.Вы получите устаревшее значение, классическую проблему многопоточности, известную как условие гонки.