<table cellspacing="0" cellpadding="0" border="0" ><tr><td valign="top" style="font: inherit;"><DIV>Hi,</DIV>
<DIV>Sorry I missed the posts on this thread. This is the code that caused me the problem (I posted this in the first post of the thread)</DIV>
<DIV>So according to your mails, I take that this is due to a bug in the ironpython code. Is there a way I can have some alternative work-out, something that I can do&nbsp;through my code? (i'm in kind of a hury to finish the project :S )</DIV><FONT size=2 face=Consolas><FONT size=2 face=Consolas>
<DIV></FONT></FONT><FONT color=#2b91af size=2 face=Consolas><FONT color=#2b91af size=2 face=Consolas><FONT color=#2b91af size=2 face=Consolas></FONT></FONT></FONT>&nbsp;</DIV>
<DIV><FONT color=#2b91af size=2 face=Consolas><FONT color=#2b91af size=2 face=Consolas><FONT color=#2b91af size=2 face=Consolas>ScriptEngine</FONT></FONT></FONT><FONT size=2 face=Consolas><FONT size=2 face=Consolas> engine = </FONT></FONT><FONT color=#2b91af size=2 face=Consolas><FONT color=#2b91af size=2 face=Consolas><FONT color=#2b91af size=2 face=Consolas>Python</FONT></FONT></FONT><FONT size=2 face=Consolas><FONT size=2 face=Consolas>.CreateEngine();</DIV>
<DIV></FONT></FONT><FONT color=#2b91af size=2 face=Consolas><FONT color=#2b91af size=2 face=Consolas><FONT color=#2b91af size=2 face=Consolas>ScriptRuntime</FONT></FONT></FONT><FONT size=2 face=Consolas><FONT size=2 face=Consolas> runtime = engine.Runtime;</DIV>
<DIV></FONT></FONT><FONT color=#2b91af size=2 face=Consolas><FONT color=#2b91af size=2 face=Consolas><FONT color=#2b91af size=2 face=Consolas>ScriptScope</FONT></FONT></FONT><FONT size=2 face=Consolas><FONT size=2 face=Consolas> scope = runtime.CreateScope();</DIV>
<DIV>ops = engine.Operations;</DIV>
<DIV></DIV>
<DIV></FONT></FONT><FONT color=#0000ff size=2 face=Consolas><FONT color=#0000ff size=2 face=Consolas><FONT color=#0000ff size=2 face=Consolas>try</DIV></FONT></FONT></FONT><FONT size=2 face=Consolas><FONT size=2 face=Consolas>
<DIV>{</DIV>
<DIV></FONT></FONT><FONT color=#2b91af size=2 face=Consolas><FONT color=#2b91af size=2 face=Consolas><FONT color=#2b91af size=2 face=Consolas>ScriptSource</FONT></FONT></FONT><FONT size=2 face=Consolas><FONT size=2 face=Consolas> source = engine.CreateScriptSourceFromFile(</FONT></FONT><FONT color=#a31515 size=2 face=Consolas><FONT color=#a31515 size=2 face=Consolas><FONT color=#a31515 size=2 face=Consolas>"ironpython.py"</FONT></FONT></FONT><FONT size=2 face=Consolas><FONT size=2 face=Consolas>);</DIV>
<DIV>source.Execute(scope);</DIV>
<DIV></FONT></FONT><FONT color=#0000ff size=2 face=Consolas><FONT color=#0000ff size=2 face=Consolas><FONT color=#0000ff size=2 face=Consolas>string</FONT></FONT></FONT><FONT size=2 face=Consolas><FONT size=2 face=Consolas> class_param = rule;</DIV>
<DIV></FONT></FONT><FONT color=#0000ff size=2 face=Consolas><FONT color=#0000ff size=2 face=Consolas><FONT color=#0000ff size=2 face=Consolas>object</FONT></FONT></FONT><FONT size=2 face=Consolas><FONT size=2 face=Consolas>[] parameters = </FONT></FONT><FONT color=#0000ff size=2 face=Consolas><FONT color=#0000ff size=2 face=Consolas><FONT color=#0000ff size=2 face=Consolas>new</FONT></FONT></FONT><FONT size=2 face=Consolas><FONT size=2 face=Consolas> </FONT></FONT><FONT color=#0000ff size=2 face=Consolas><FONT color=#0000ff size=2 face=Consolas><FONT color=#0000ff size=2 face=Consolas>object</FONT></FONT></FONT><FONT size=2 face=Consolas><FONT size=2 face=Consolas>[1];</DIV>
<DIV>parameters[0] = class_param;</DIV>
<DIV></FONT></FONT><FONT color=#0000ff size=2 face=Consolas><FONT color=#0000ff size=2 face=Consolas><FONT color=#0000ff size=2 face=Consolas>object</FONT></FONT></FONT><FONT size=2 face=Consolas><FONT size=2 face=Consolas> klass = scope.GetVariable(</FONT></FONT><FONT color=#a31515 size=2 face=Consolas><FONT color=#a31515 size=2 face=Consolas><FONT color=#a31515 size=2 face=Consolas>"model_checker"</FONT></FONT></FONT><FONT size=2 face=Consolas><FONT size=2 face=Consolas>);</DIV>
<DIV></FONT></FONT><FONT color=#0000ff size=2 face=Consolas><FONT color=#0000ff size=2 face=Consolas><FONT color=#0000ff size=2 face=Consolas>object</FONT></FONT></FONT><FONT size=2 face=Consolas><FONT size=2 face=Consolas> instance = ops.Invoke(klass, parameters);</DIV>
<DIV>method = ops.GetMember(instance, </FONT></FONT><FONT color=#a31515 size=2 face=Consolas><FONT color=#a31515 size=2 face=Consolas><FONT color=#a31515 size=2 face=Consolas>"check_model"</FONT></FONT></FONT><FONT size=2 face=Consolas><FONT size=2 face=Consolas>);</DIV>
<DIV>}</DIV>
<DIV></FONT></FONT><FONT color=#0000ff size=2 face=Consolas><FONT color=#0000ff size=2 face=Consolas><FONT color=#0000ff size=2 face=Consolas>catch</FONT></FONT></FONT><FONT size=2 face=Consolas><FONT size=2 face=Consolas> (</FONT></FONT><FONT color=#2b91af size=2 face=Consolas><FONT color=#2b91af size=2 face=Consolas><FONT color=#2b91af size=2 face=Consolas>Exception</FONT></FONT></FONT><FONT size=2 face=Consolas><FONT size=2 face=Consolas> e)</DIV>
<DIV>{</DIV>
<DIV></FONT></FONT><FONT color=#2b91af size=2 face=Consolas><FONT color=#2b91af size=2 face=Consolas><FONT color=#2b91af size=2 face=Consolas>Console</FONT></FONT></FONT><FONT size=2 face=Consolas><FONT size=2 face=Consolas>.WriteLine(e.ToString());</DIV>
<DIV>}</DIV>
<DIV></FONT></FONT>&nbsp;</DIV>
<DIV>&nbsp;</DIV>
<DIV><BR><BR>--- On <B>Thu, 14/4/11, Jeff Hardy <I>&lt;jdhardy@gmail.com&gt;</I></B> wrote:<BR></DIV>
<BLOCKQUOTE style="BORDER-LEFT: rgb(16,16,255) 2px solid; PADDING-LEFT: 5px; MARGIN-LEFT: 5px"><BR>From: Jeff Hardy &lt;jdhardy@gmail.com&gt;<BR>Subject: Re: [IronPython] how to generate multiple concurrent scriptign engines?<BR>To: "Discussion of IronPython" &lt;users@lists.ironpython.com&gt;<BR>Cc: "surangika ranathunga" &lt;lady_radsu@yahoo.com&gt;<BR>Received: Thursday, 14 April, 2011, 7:35 AM<BR><BR>
<DIV class=plainMail>As long as you have a ScriptScope per thread, you should be able to<BR>share the ScriptEngine &amp; Runtime between threads.<BR><BR>What is the exception that you are getting? If it's a GUI program,<BR>remember that UI elements can only be manipulated from the main<BR>thread.<BR><BR>- Jeff<BR><BR>On Thu, Apr 14, 2011 at 1:02 AM, surangika ranathunga<BR>&lt;<A href="http://nz.mc1102.mail.yahoo.com/mc/compose?to=lady_radsu@yahoo.com" ymailto="mailto:lady_radsu@yahoo.com">lady_radsu@yahoo.com</A>&gt; wrote:<BR>&gt;<BR>&gt; Hi,<BR>&gt; I am using Ironpython to connect to a legacy python code from C#.<BR>&gt; I am not fully familiar with Ironpython, but managed to get it working for a single-threaded application.<BR>&gt; This is how I implemented this:<BR>&gt;<BR>&gt; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ScriptEngine engine = Python.CreateEngine();<BR>&gt;
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ScriptRuntime runtime = engine.Runtime;<BR>&gt; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ScriptScope scope = runtime.CreateScope();<BR>&gt; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ops = engine.Operations;<BR>&gt; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ScriptSource source = engine.CreateScriptSourceFromFile("ironpython.py");<BR>&gt; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; source.Execute(scope);<BR>&gt; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; string class_param = rule;<BR>&gt; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; object[] parameters = new object[1];<BR>&gt;
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; parameters[0] = class_param;<BR>&gt; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; object klass = scope.GetVariable("model_checker");<BR>&gt; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; object instance = ops.Invoke(klass, parameters);<BR>&gt; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; method = ops.GetMember(instance, "check_model");<BR>&gt;<BR>&gt; Now I want to make my application multi-threaded, and I want to have concurrently running scripting engines. Essentially, these engines should access the same underlying python code, and hence these scripting engines are identical to each other.<BR>&gt; Without any change, the above code works fine for most of the time for a multi-threaded application. However, there is an exception
 that appears from time to time, and I suspect that it is due to a concurrency issue.<BR>&gt;<BR>&gt; Is there anything specific that I should do to generate multiple scripting engines running in separate threads without interfering with each other?<BR>&gt;<BR>&gt; any ideas greatly appreciated<BR>&gt;<BR>&gt; _______________________________________________<BR>&gt; Users mailing list<BR>&gt; <A href="http://nz.mc1102.mail.yahoo.com/mc/compose?to=Users@lists.ironpython.com" ymailto="mailto:Users@lists.ironpython.com">Users@lists.ironpython.com</A><BR>&gt; <A href="http://lists.ironpython.com/listinfo.cgi/users-ironpython.com" target=_blank>http://lists.ironpython.com/listinfo.cgi/users-ironpython.com</A><BR>&gt;<BR></DIV></BLOCKQUOTE></td></tr></table>