[IronPython] ActiveX STA Issue in compiled Winforms EXE

Davy Mitchell daftspaniel at gmail.com
Sat Nov 8 22:58:32 CET 2008


Thanks Dino - here's the info:
Unhandled Exception: System.Threading.ThreadStateException: ActiveX control
'8856f961-340a-11d0-a96b-00c04fd705a2' cannot be instantiated because the
current thread is not in a single-threaded apartment.
   at System.Windows.Forms.WebBrowserBase..ctor(String clsidString)
   at System.Windows.Forms.WebBrowser..ctor()
   at _stub_$24##21(Closure , CallSite , CodeContext , Object )
   at Microsoft.Scripting.Actions.MatchCaller.Call2[T0,T1,TRet](Func`4
target, CallSite site, Object[] args)
   at Microsoft.Scripting.Actions.CallSite`1.UpdateAndExecute(Object[] args)
   at
Microsoft.Scripting.Actions.UpdateDelegates.Update2[T,T0,T1,TRet](CallSite
site, T0 arg0, T1 arg1)
   at S$1.__init__$7(Closure , Object self)
   at _stub_$18##15(Closure , CallSite , CodeContext , Object , Object )
   at Microsoft.Scripting.Actions.MatchCaller.Call3[T0,T1,T2,TRet](Func`5
target, CallSite site, Object[] args)
   at Microsoft.Scripting.Actions.CallSite`1.UpdateAndExecute(Object[] args)
   at
Microsoft.Scripting.Actions.UpdateDelegates.Update3[T,T0,T1,T2,TRet](CallSite
site, T0 arg0, T1 arg1, T2 arg2)
   at _stub_$17##14(Closure , CallSite , CodeContext , Object )
   at Microsoft.Scripting.Actions.MatchCaller.Call2[T0,T1,TRet](Func`4
target, CallSite site, Object[] args)
   at Microsoft.Scripting.Actions.CallSite`1.UpdateAndExecute(Object[] args)
   at
Microsoft.Scripting.Actions.UpdateDelegates.Update2[T,T0,T1,TRet](CallSite
site, T0 arg0, T1 arg1)
   at _stub_$16##13(Closure , CallSite , CodeContext , Object )
   at Microsoft.Scripting.Actions.MatchCaller.Call2[T0,T1,TRet](Func`4
target, CallSite site, Object[] args)
   at Microsoft.Scripting.Actions.CallSite`1.UpdateAndExecute(Object[] args)
   at
Microsoft.Scripting.Actions.UpdateDelegates.Update2[T,T0,T1,TRet](CallSite
site, T0 arg0, T1 arg1)
   at S$1.Initialize(Scope $scope, LanguageContext $language)
   at
Microsoft.Scripting.Runtime.OptimizedScriptCode.InvokeTarget(LambdaExpression
code, Scope scope)
   at Microsoft.Scripting.ScriptCode.Run(Scope scope)
   at IronPython.Runtime.PythonContext.CreateModule(String fileName, Scope
scope, ScriptCode scriptCode, ModuleOptions options)
   at IronPython.Runtime.PythonContext.CompileModule(String fileName, String
moduleName, SourceUnit sourceCode, ModuleOptions options, ScriptCode&
scriptCode)
   at IronPython.Runtime.PythonContext.CompileModule(String fileName, String
moduleName, SourceUnit sourceCode, ModuleOptions options)
   at IronPython.Runtime.Importer.LoadFromSourceUnit(CodeContext context,
SourceUnit sourceCode, String name, String path)
   at IronPython.Runtime.Importer.LoadModuleFromSource(CodeContext context,
String name, String path)
   at IronPython.Runtime.Importer.LoadFromDisk(CodeContext context, String
name, String fullName, String str)
   at IronPython.Runtime.Importer.ImportFromPathHook(CodeContext context,
String name, String fullName, List path, Func`5 defaultLoader)
   at IronPython.Runtime.Importer.ImportFromPath(CodeContext context, String
name, String fullName, List path)
   at IronPython.Runtime.Importer.ImportTopAbsolute(CodeContext context,
String name)
   at IronPython.Runtime.Importer.ImportModule(CodeContext context, Object
globals, String modName, Boolean bottom, Int32 level)
   at IronPython.Runtime.Builtin.__import__(CodeContext context, String
name, Object globals, Object locals, Object fromlist, Int32 level)
   at _stub_$1##1(Closure , CallSite , CodeContext , Object , String ,
IAttributesCollection , IAttributesCollection , PythonTuple , Int32 )
   at
Microsoft.Scripting.Actions.MatchCaller.Call7[T0,T1,T2,T3,T4,T5,T6,TRet](Func`9
target, CallSite site, Object[] args)
   at Microsoft.Scripting.Actions.CallSite`1.UpdateAndExecute(Object[] args)
   at
Microsoft.Scripting.Actions.UpdateDelegates.Update7[T,T0,T1,T2,T3,T4,T5,T6,TRet](CallSite
site, T0 arg0, T1 arg1, T2 arg2, T3 arg3, T4 arg4, T5 arg5, T6
rg6)
   at IronPython.Runtime.Importer.Import(CodeContext context, String
fullName, PythonTuple from, Int32 level)
   at IronPython.Runtime.Operations.PythonOps.InitializeModule(Assembly
precompiled, String main, String[] references)
   at PythonMain.Main()

Repro code is:

import clr
clr.AddReference('System.Windows.Forms')
from System.Windows.Forms import *

class MainForm(Form):
    def __init__(self):
        self.Dock = DockStyle.Fill
        self.Controls.Add(WebBrowser())
form = MainForm()
Application.Run(form)

Compiled with:
ipy pyc.py /out:wf /target:winexe /main:repro.py

-X:ExceptionDetail didn't alter the output from the exe. Run from ipy there
was no issue.

Cheers,
Davy

On Sat, Nov 8, 2008 at 5:39 PM, Dino Viehland <dinov at microsoft.com> wrote:

> I'd start w/ -X:ExceptionDetail to get the full stack trace.  Presumably
> there's something higher up the stack then the MatchCaller on the stack.
>
> -----Original Message-----
> From: users-bounces at lists.ironpython.com [mailto:
> users-bounces at lists.ironpython.com] On Behalf Of Davy Mitchell
> Sent: Saturday, November 08, 2008 6:19 AM
> To: Discussion of IronPython
> Subject: Re: [IronPython] ActiveX STA Issue in compiled Winforms EXE
>
> Hi Michael
>
> >Are you doing this from a separate thread?
>
> No.
>
> It's a couple of modules deep from the 'main' script. Was going to try
> a single py file to repro.
>
> > I assume it works fine when run uncompiled?
>
> Yep, runs great.
> Cheers,
> Davy
>
>
> On 11/8/08, Michael <fuzzyman at gmail.com> wrote:
> > Are you doing this from a separate thread? I assume it works fine when
> > run uncompiled?
> >
> >
> > Michael
> >
> > http://www.ironpythoninaction.com
> >
> > On 8 Nov 2008, at 12:10, "Davy Mitchell" <daftspaniel at gmail.com> wrote:
> >
> >> IPY 2.0 RC1
> >>
> >>
> >> ActiveX Issue in a pyc compiled Winforms EXE which uses the
> >> WebBrowser control.
> >>
> >> Unhandled Exception: System.Threading.ThreadStateException: ActiveX
> >> control '8856f961-340a-11d0-a96b-00c04fd705a2' cannot be
> >> instantiated because the current thread is not in a single-threaded
> >> apartment.
> >>    at System.Windows.Forms.WebBrowserBase..ctor(String clsidString)
> >>    at System.Windows.Forms.WebBrowser..ctor()
> >>    at _stub_$643##332(Closure , CallSite , CodeContext , Object )
> >>    at Microsoft.Scripting.Actions.MatchCaller.Call2[T0,T1,TRet]
> >> (Func`4 target, C
> >>
> >> Help!! :-)
> >>
> >> Any thoughts before I delve further into this?
> >>
> >> Thanks
> >> Davy Mitchell
> >> _______________________________________________
> >> Users mailing list
> >> Users at lists.ironpython.com
> >> http://lists.ironpython.com/listinfo.cgi/users-ironpython.com
> > _______________________________________________
> > Users mailing list
> > Users at lists.ironpython.com
> > http://lists.ironpython.com/listinfo.cgi/users-ironpython.com
> >
> _______________________________________________
> Users mailing list
> Users at lists.ironpython.com
> http://lists.ironpython.com/listinfo.cgi/users-ironpython.com
>
> _______________________________________________
> Users mailing list
> Users at lists.ironpython.com
> http://lists.ironpython.com/listinfo.cgi/users-ironpython.com
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/ironpython-users/attachments/20081108/47e5e6c2/attachment.html>


More information about the Ironpython-users mailing list