InfoPath FormControl в рабочем потоке STA - PullRequest
0 голосов
/ 21 февраля 2009

У меня есть класс .NET, который предоставляет два открытых метода: один для создания формы InfoPath, а другой для экспорта в один из поддерживаемых форматов. Я использую Microsoft FormControl для этого. Он размещается в форме, которая не отображается. Меня вызывает приложение Winforms, но в рабочем потоке MTA вместо потока пользовательского интерфейса. Поэтому я создаю поток STA и выполняю его, который работает ровно один раз, а затем выдает следующее исключение:

System.InvalidOperationException не было обработано Message = "Невозможно получить дескриптор окна для элемента управления FormControl. Элементы управления ActiveX без окон не поддерживаются." Источник = "System.Windows.Forms" Трассировки стека: в System.Windows.Forms.AxHost.EnsureWindowPresent () в System.Windows.Forms.AxHost.InPlaceActivate () в System.Windows.Forms.AxHost.TransitionUpTo (состояние Int32) в System.Windows.Forms.AxHost.CreateHandle () в System.Windows.Forms.Control.CreateControl (Boolean fIgnoreVisible) в System.Windows.Forms.Control.CreateControl (Boolean fIgnoreVisible) в System.Windows.Forms.AxHost.EndInit () в InfoPathCreateStaThreadTest.FormControlHost.InitializeComponent () в C: \ Windows \ Temp \ InfoPathCreateStaThreadTest \ InfoPathCreateStaThreadTest \ FormControlHost.Designer.cs: строка 65

После некоторых экспериментов я начал подозревать, что это проблема перекачки сообщений. Затем я столкнулся с этим, что заставляет меня более сильно подозревать так: http://blogs.msdn.com/cbrumme/archive/2004/02/02/66219.aspx

Я пробовал разные способы прокачки сообщений, но безуспешно. Я должен отметить, что альтернатива автоматизации приложения InfoPath нежизнеспособна, если я не могу понять, как скрыть приложение.

Любая помощь будет высоко ценится.

Ответы [ 3 ]

1 голос
/ 15 февраля 2011

Вы создаете свой рабочий поток (тот, который вызывает элемент управления) после форма загружается? У меня была эта проблема, пока я не переместил все свои вызовы в FormControl в событии Load родительской формы. После этого я не сталкивался с этой конкретной ошибкой (хотя я видел много других)

0 голосов
/ 05 апреля 2009

Спасибо за ваш ответ. Извините за задержку ответа с моей стороны. DEP не вызывает у меня проблемы. В итоге я автоматизировал приложение InfoPath по сравнению с использованием FormControl. Желаем удачи в решении вашей проблемы!

Rob

0 голосов
/ 27 февраля 2009

Я исследую ту же ошибку и обнаружил: http://social.msdn.microsoft.com/Forums/en-US/clr/thread/9c36e5d3-a75c-4760-9070-5dbaf188992b/, которая объясняет проблему неожиданным включением DEP и предоставляет исправление. Я пока не знаю, решит ли это мою проблему.

...