Ну, причина, по которой вы не должны обновлять элементы управления GUI в фоновом потоке, заключается в том, что классы элементов управления GUI не являются потокобезопасными. Таким образом, вы можете обобщить это: не связывайтесь с экземплярами не поточно-безопасных классов из фонового потока, если есть какой-то другой поток, который также может их использовать. (Я знаю, это широко, но все, что нарушает это правило, может привести к неприятностям).
Но я думаю, что суть вашего вопроса заключается в том, охватили ли вы все основы, которые Control.Invoke()
был создан, чтобы покрыть. Если да, то у вас есть ... Control.Invoke был специально разработан для того факта, что элементы управления не являются потокобезопасными, и поэтому другие потоки должны изменять элементы управления только через Control.Invoke()
.