<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 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> </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> </DIV>
<DIV> </DIV>
<DIV><BR><BR>--- On <B>Thu, 14/4/11, Jeff Hardy <I><jdhardy@gmail.com></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 <jdhardy@gmail.com><BR>Subject: Re: [IronPython] how to generate multiple concurrent scriptign engines?<BR>To: "Discussion of IronPython" <users@lists.ironpython.com><BR>Cc: "surangika ranathunga" <lady_radsu@yahoo.com><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 & 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><<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>> wrote:<BR>><BR>> Hi,<BR>> I am using Ironpython to connect to a legacy python code from C#.<BR>> I am not fully familiar with Ironpython, but managed to get it working for a single-threaded application.<BR>> This is how I implemented this:<BR>><BR>> ScriptEngine engine = Python.CreateEngine();<BR>>
ScriptRuntime runtime = engine.Runtime;<BR>> ScriptScope scope = runtime.CreateScope();<BR>> ops = engine.Operations;<BR>> ScriptSource source = engine.CreateScriptSourceFromFile("ironpython.py");<BR>> source.Execute(scope);<BR>> string class_param = rule;<BR>> object[] parameters = new object[1];<BR>>
parameters[0] = class_param;<BR>> object klass = scope.GetVariable("model_checker");<BR>> object instance = ops.Invoke(klass, parameters);<BR>> method = ops.GetMember(instance, "check_model");<BR>><BR>> 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>> 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>><BR>> Is there anything specific that I should do to generate multiple scripting engines running in separate threads without interfering with each other?<BR>><BR>> any ideas greatly appreciated<BR>><BR>> _______________________________________________<BR>> Users mailing list<BR>> <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>> <A href="http://lists.ironpython.com/listinfo.cgi/users-ironpython.com" target=_blank>http://lists.ironpython.com/listinfo.cgi/users-ironpython.com</A><BR>><BR></DIV></BLOCKQUOTE></td></tr></table>