Thanks for the prompt answer Dino.

The lock is defined in a C# library and I have to access it ... I assume Monitor and threading.Lock() are different implementations (specifically, you can't mix and match)?

I can live with the Monitor for now I think.

Thanks again!
-Sandy


On 1/11/2010 2:23 PM, Dino Viehland wrote:
If you really want to use .NET monitors you can code it up as a try/finally:

Monitor.Enter(m_object)
try:
        if ...:
                ...
finally:
        Monitor.Exit(m_object)

If you'd like to do a slightly more Pythonic lock you could do:

import threading

x = threading.Lock()
with x:
     pass

Or you could combine the two approaches:

from System.Threading import Monitor
class ObjectLocker(object):
     def __init__(self, obj):
             self.obj = obj
     def __enter__(self):
             Monitor.Enter(self.obj)
     def __exit__(self, *args):
             Monitor.Exit(self.obj)

with ObjectLocker(object()):
     pass



-----Original Message-----
From: users-boun...@lists.ironpython.com [mailto:users-
boun...@lists.ironpython.com] On Behalf Of Sandy Walsh
Sent: Monday, January 11, 2010 9:43 AM
To: users@lists.ironpython.com
Subject: [IronPython] Converting C# to Python ... the lock() keyword?

Hi,

I'm converting a C# program to IronPython and running into the C# lock()
command ... what is the equivalent operation in IronPython?

The C# is like:

   lock(m_object)
      if (...)
      {
       ...
       }

Thanks!
-Sandy
_______________________________________________
Users mailing list
Users@lists.ironpython.com
http://lists.ironpython.com/listinfo.cgi/users-ironpython.com


<<attachment: swalsh.vcf>>

_______________________________________________
Users mailing list
Users@lists.ironpython.com
http://lists.ironpython.com/listinfo.cgi/users-ironpython.com

Reply via email to