It's a bug in gmcs.

However, using 'lock' and 'yield' together doesn't sound like a good
idea to me.  The standard doesn't specify anything about releasing and
re-acquiring the lock around a yield[1]: so, the lock is very
long-lived.


I have filed a bug report.

From the Microsoft C# Programmers Reference:
Unsafe blocks are not allowed

My naive unterstanding of how yield works was that code until the loop is executed (i.e. the lock is aquired), then the code inside the foreach (the one that called the function containing yield) is called and finally the code after my loop is called (i.e. the lock is released). In my real life example I am iterating through nested Hashtables/Lists and call that from an aspx page to generate HTML output. I thought I need to lock the object so that the collections are not modified while I am iterating.

I wanted to avoid copying all the data, but maybe there is something that is better suited for tasks like that.

Does that make any sense?

Thank you
Bernhard
_______________________________________________
Mono-list maillist  -  [email protected]
http://lists.ximian.com/mailman/listinfo/mono-list

Reply via email to