Ваш код эквивалентен следующему:
var temp = DateTime.Now;
EditingItem.TO = temp;
EditingItem.FROM = temp;
Поместить назначения в одну строку - это просто сокращение, которое, возможно, показывает корни языка C в C #.
Теперь, когда выпредоставили больше информации о вашей проблеме, кажется, что ваша программа зависает из-за COM-блокировки.Трудно понять, как назначение значений DateTime
может привести к этому тупику.Исключение указывает на то, что CLR пытается вызвать COM-объект в STA (однопотоковая квартира), который не обрабатывает свой обработчик сообщений.
Я просто пытаюсь описать возможный сценарий, но знаю оподробности вашей проблемы Я могу быть далеко:
Допустим, у вас есть пользовательский интерфейс на основе COM, который отвечает на событие (например, щелчок).В обработчике событий запускается фоновый поток, а затем обработчик событий ожидает завершения этого потока или установки сигнала о завершении фоновой задачи.Фоновая задача (запущенная в другом потоке) затем пытается получить свойство для COM-объекта.Это вызовет тупик, подобный тому, который вы испытываете.
Фоновый поток, работающий в другой квартире, отличной от элемента управления COM, должен маршалировать вызов в квартиру элемента управления COM (STA).Это делается путем отправки сообщения Windows в скрытое окно, используемое COM.Однако поток, который должен отправить это сообщение Windows, в настоящее время заблокирован, ожидая завершения фонового потока.Фоновый поток ожидает, пока поток пользовательского интерфейса не отправит сообщение Windows.Это тупик.
Во избежание этого никогда не блокируйте поток пользовательского интерфейса, или если вам нужно хотя бы убедиться, что вы прокачиваете насос сообщений во время ожидания.Как это делается, указано в сообщении об исключении.