Вот интересный пример - в VS2005 / VS2008, работающем с .NET 2.0 / .NET 3.0 / .NET 3.5, поток BackgroundWorker не может напрямую обновлять элементы управления в форме WinForms, которая инициировала этот поток - вы получите System.InvalidOperationException
из BackgroundWorker о том, что «операция с несколькими потоками недопустима: управление 'thecontrol' осуществляется из потока, отличного от потока, в котором он был создан". Я помню, как делал это в 2004 году или около того, когда впервые начал писать приложения .NET WinForms с фоновыми потоками. Есть несколько способов решения этой проблемы - это не вопрос, требующий ответа.
Мне недавно сказали, что этот тип операции теперь разрешен при написании в VS2010 / .NET 4.0. Это кажется мне маловероятным, поскольку такого рода ограничения доступа к объектам всегда были довольно фундаментальной частью поточно-ориентированного программирования. Разрешение потоку BackgroundWorker прямого доступа к объектам, принадлежащим не самому себе, а его родительской форме пользовательского интерфейса, кажется противоречащим этому принципу. Трал через документы .NET 4.0 не выявил каких-либо очевидных изменений, которые могли бы объяснить это поведение.
У меня нет VS2010 / .NET 4.0, чтобы проверить это - знает ли кто-нибудь, кто имеет доступ к этому набору инструментов, точно ли модель была изменена, чтобы разрешить такое взаимодействие потоков? Я хотел бы либо воспользоваться этим в будущем, либо развернуть ключ. ;)