FormControl on STA worker thread

R

Rob Ford

I have a .NET class that exposes two public methods: one to create an
InfoPath form and another to Export to one of the supported formats. I’m
using the Microsoft FormControl to do this. It’s hosted by a Form that never
gets displayed. I get called by a Winforms app, but on a MTA worker thread
instead of the UI thread. So I create a STA thread and execute on that, which
works exactly once and then results in this exception:

System.InvalidOperationException was unhandled
Message="Unable to get the window handle for the 'FormControl' control.
Windowless ActiveX controls are not supported."
Source="System.Windows.Forms"
StackTrace:
at System.Windows.Forms.AxHost.EnsureWindowPresent()
at System.Windows.Forms.AxHost.InPlaceActivate()
at System.Windows.Forms.AxHost.TransitionUpTo(Int32 state)
at System.Windows.Forms.AxHost.CreateHandle()
at System.Windows.Forms.Control.CreateControl(Boolean fIgnoreVisible)
at System.Windows.Forms.Control.CreateControl(Boolean fIgnoreVisible)
at System.Windows.Forms.AxHost.EndInit()
at InfoPathCreateStaThreadTest.FormControlHost.InitializeComponent()
in
C:\Windows\Temp\InfoPathCreateStaThreadTest\InfoPathCreateStaThreadTest\FormControlHost.Designer.cs:line 65

After some experimenting, I started to suspect this is a message pumping
problem and then came across this:
http://blogs.msdn.com/cbrumme/archive/2004/02/02/66219.aspx. So I tried
various methods of pumping messages, but with no luck. I should mention that
the alternative of automating the InfoPath app is not viable unless I can
figure out how to hide the app.

Any help would be much appreciated.
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Top