от
Я создаю пользовательский плагин для Microsoft Deployment Toolkit (MDT), сделав много выводов из SCCM (SMS) SDK. Чтобы создать собственный плагин для MDT, я сначала ссылаюсь на Microsoft.BDD.Actions.dll и Microsoft.BDD.Workbench.dll. После ссылки я могу создать собственное действие последовательности задач, унаследовав его от Microsoft.BDD.Workbench.TaskSequenceActionControl. Это прекрасно работает; Я получаю пользовательский интерфейс и элементы управления базового класса, и до сих пор разработка проходила гладко, пока я не попытался добавить элемент управления Tab в свой пользовательский TaskSequenceActionControl. Я хочу показать модальные диалоги (File Browser), а также хочу возможность запуска процесса (гиперссылки). Если я помещаю Button в TaskSequenceActionControl и подключаю его событие к простому методу, чтобы показать базовый модальный диалог, например MessageBox. Показать («Тестирование»), окно сообщения отображается так, как вы ожидаете. Однако, если я помещаю элемент управления Tab в TaskSequenceActionControl и помещаю кнопку в одну из панелей элемента управления Tab, и его событие аналогично подключается к тому же простому вызову MessageBox.Show (), когда я нажимаю кнопку, MDT будет висеть. Предполагая, что у меня возникла какая-то (перекрестная) проблема с потоком, я попытался подключить несколько разных способов отображения этого простого модального диалога: Просто стандартный вызов MessageBox.Show () Наличие события кнопки вызывает открытый метод класса TaskSequenceActionControl, который просто выполняет MessageBox.Show () Передайте дескриптор TaskSequenceActionControl в MessageBox через MessageBox.Show (это «Test») Нажмите кнопку, чтобы создать новую тему: новый System.Threading.Thread (() => {     MessageBox.Show ( "Тест"); }).Начните(); Сделайте так, чтобы нажатие кнопки показывало диалог асинхронно: ожидайте System.Threading.Tasks.Task.Run (async () => {     MessageBox.Show ( "Тест"); }); Примечательно, что перечисленные выше последовательные параметры будут приводить к зависанию MDT перед отображением диалогового окна Message Box. Создание нового потока и асинхронный запуск кода приводит к отображению окна сообщения, но все равно зависает. Я сбит с толку, потому что я могу выполнять эти операции вне элемента управления вкладками, но однажды на панели элемента управления вкладками происходит сбой. Я несколько летаю в темноте, потому что у MDT нет никакого официального SDK, и поэтому я не уверен, есть ли у меня какой-либо способ отладить то, что здесь происходит. Я подключился к своему собственному действию последовательности задач через отладчик VS и могу успешно пройти через все, пока не попытаюсь вызвать MessageBox.Show (), после чего отладчик останавливается. У кого-нибудь есть другие идеи, которые я могу попробовать? Возможно, мне не хватает способа связать или связать элемент управления Tab и / или его панели с родительским процессом или что-то еще? Или, возможно, MDT имеет свои собственные пользовательские функции (как часть TaskSequenceActionControl), и использование элемента управления Tab просто невозможно?              

Ваш ответ

Отображаемое имя (по желанию):
Конфиденциальность: Ваш электронный адрес будет использоваться только для отправки уведомлений.
Анти-спам проверка:
Чтобы избежать проверки в будущем, пожалуйста войдите или зарегистрируйтесь.
Добро пожаловать на сайт ByNets, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...