|
Great, Brian.
I successfully reproduced the state with a very
simple application. Here is very dumb python program that uses the
CLR:
from CLR.System import String
class cSharpCaller( object ):
def __init__( self ): print "Created a cSharpCaller instance" self.__cSharpString = None def createCSharpString( self,
str ):
self.__cSharpString = String( str ) def returnCSharpString( self
):
return self.__cSharpString.ToString() And if I test this with this (dumb) threethreaded
testprogram:
import threading, thread, time
from cSharpCaller import cSharpCaller
def start_threads(amount=5):
for i in range(amount): thread = threading.Thread(target=process_thread ) print "starting thread ", thread.getName() thread.start() def process_thread( ):
print "thread started " for i in range( 2 ): print "Hi, I'm a thread" time.sleep( 1 ) cs = cSharpCaller( ) cs.createCSharpString( "created from a thread" ) print "cs.returnCSharpString() = ", cs.returnCSharpString() print "thread %s ended" start_threads( 3 )
I get this output:
starting thread thread0
thread started Hi, I'm thread %s starting thread thread1 thread started Hi, I'm thread %s starting thread thread2 thread started Hi, I'm thread %s Hi, I'm thread %s Hi, I'm thread %s Hi, I'm thread %s Created a cSharpCaller instance Created a cSharpCaller instance cs.returnCSharpString() = and I have to CTRL+Pause to get out of the hang.
Clearly hangs on the first String.ToString() method call.
Regards,
Torgeir
|
_________________________________________________ Python.NET mailing list - [email protected] http://mail.python.org/mailman/listinfo/pythondotnet
