Средства управления в.NET не вообще ориентированы на многопотоковое исполнение. Это означает, что Вы не должны получать доступ к управлению от потока кроме того, где он живет. Для обхождения этого Вам нужно к , вызывают управление, которое является тем, чего делает попытку Ваш 2-й образец.
Однако в Вашем случае все, что Вы сделали, пасуют назад продолжительный метод к основному потоку. Конечно, это не действительно, что Вы хотите сделать. Необходимо заново продумать это немного так, чтобы все, что Вы делаете на основном потоке, установило быстрое свойство тут и там.
Некоторое время существует разрыв между C # и VB. VB генерирует для вас много кода. Например, нажатие клавиши Enter после завершения оператора «If» автоматически добавит «Then» в конец этой строки, если вы ее не использовали, и закроет ее частью «End If». В C # вы должны добавить эти начальные и закрывающие {} фигурные скобки.
VB имеет фоновую компиляцию задолго до C #. Фактически, это было одним из основных факторов привлекательности ReSharper, который предоставлял такую функциональность. Однако с VS 2008 / .NET 3.5 SP1 все изменилось. Вы можете прочитать сообщение Скотта Гу об этом здесь , но я вставлю соответствующую часть:
«Редактор кода C # теперь идентифицирует и отображает красные волнистые ошибки для многих проблемы семантического кода, которые ранее требовалась явная компиляция для идентифицировать. Например, если вы попытаетесь объявить и использовать неизвестный тип в Редактор кода C # сегодня вы не увидите ошибка компиляции, пока вы не выполните сборку. Теперь с SP1 вы увидите живой красный немедленно выводить ошибки (нет требуется явная компиляция). "
Использование CodeRush или ReSharper определенно расширяет возможности автозаполнения общих операторов, что заставит разработчика VB почувствовать, что произошел плавный переход.
Это не совсем решает технические проблемы, но команды разработчиков разные и не обязательно делают одно и то же. Другими словами, вряд ли будет общий подход. Отрывок из этого сообщения в блоге , сделанный техническим руководителем группы VB, поддерживает это:
«Фоновая компиляция» - это функция в VB, которая дает вам полный набор ошибок по мере ввода. Люди, которые перемещаются между VB и C # замечают это, но только VB разработчики могут не осознавать, что другие такие языки, как C #, не всегда дают вы на 100% точны Intellisense и не всегда дают вам все ошибки, существующие в вашем коде. это потому что их движки Intellisense это отдельные уменьшенные компиляторы которые не выполняют полную компиляцию в задний план. VB, с другой стороны, компилирует весь ваш проект из начать заканчивать, пока Visual Studio сидит простаивает, что позволяет нам немедленно заполнить список задач полностью точные ошибки и позволяющие нам дать вам полностью точный Intellisense.
И последнее замечание - недавнее интервью Channel9 с главой группы разработчиков C # / VB / F # Лукой Болоньезе, в котором он подчеркнул, что языки больше не собираются сбиваться с пути в разных направления и начнем делиться их сходством. Похоже, будущее ждет великих дел!