Может ли только UI-поток отображаться на экране, или другие потоки могут это делать?
Нет, вы можете получить доступ к пользовательскому интерфейсу только из потока пользовательского интерфейса, но вы можете упорядочить результаты из других потоков, например, используя Control.Invoke или control.BegineInvoke / EndInvoke
Проверьте this из
Вы можете использовать BeginInvoke() член всех элементов управления GUI, чтобы изменить значения их свойств из фоновых потоков. Если вы используете фонового работника, вы можете использовать событие ReportProgress, что еще проще.
BeginInvoke()
ReportProgress
также зависит от того, используете ли вы WinForms или WPF, в Winforms вы используете Control.Invoke и в WPF вы используете класс Dispatcher.WPF имеет более сложный нить диспетчер пользовательского интерфейса