<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
	<id>tag:www.nabble.com,2006:forum-15382</id>
	<title>Nabble - Castle</title>
	<updated>2008-10-12T13:33:18Z</updated>
	<link rel="self" type="application/atom+xml" href="http://www.nabble.com/Castle-f15382.xml" />
	<link rel="alternate" type="text/html" href="http://www.nabble.com/Castle-f15382.html" />
	<subtitle type="html">&lt;a href=&quot;http://www.castleproject.org&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;Castle&lt;/a&gt;&amp;nbsp;aspires to simplify the development of enterprise and web applications. Offering a set of tools (working together or independently) and integration with other open source projects, Castle helps you get more done with less code.</subtitle>
	
<entry>
	<id>tag:www.nabble.com,2006:post-19945541</id>
	<title>Re: : /trunk/InversionOfControl/Castle.MicroKernel/</title>
	<published>2008-10-12T13:33:18Z</published>
	<updated>2008-10-12T13:33:18Z</updated>
	<author>
		<name>Adam Tybor</name>
	</author>
	<content type="html">&lt;br&gt;Not to burst anyone's bubble but RWSlim doesn't work in medium trust
&lt;br&gt;environments anyway. &amp;nbsp;Are we still going to allow a medium trust build
&lt;br&gt;option?
&lt;br&gt;&lt;a href=&quot;http://weblogs.asp.net/leftslipper/archive/2008/03/31/mvc-locking-the-routecollection.aspx&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://weblogs.asp.net/leftslipper/archive/2008/03/31/mvc-locking-the-routecollection.aspx&lt;/a&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;On Oct 12, 12:20 pm, &amp;quot;Ayende Rahien&amp;quot; &amp;lt;&lt;a href=&quot;http://www.nabble.com/user/SendEmail.jtp?type=post&amp;post=19945541&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;aye...@...&lt;/a&gt;&amp;gt; wrote:
&lt;div class='shrinkable-quote'&gt;&lt;br&gt;&amp;gt; I think it was for C# 3.0 features, not .net 3.5 .net-2.0 compatibility is
&lt;br&gt;&amp;gt; still important, I think.
&lt;br&gt;&amp;gt; We can use #ifdef again, I suppose.
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; On Sun, Oct 12, 2008 at 6:35 PM, hammett &amp;lt;&lt;a href=&quot;http://www.nabble.com/user/SendEmail.jtp?type=post&amp;post=19945541&amp;i=1&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;hamm...@...&lt;/a&gt;&amp;gt; wrote:
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; &amp;gt; I thought we have held a vote on that recently...
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; &amp;gt; On Sun, Oct 12, 2008 at 5:25 AM, Ayende Rahien &amp;lt;&lt;a href=&quot;http://www.nabble.com/user/SendEmail.jtp?type=post&amp;post=19945541&amp;i=2&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;aye...@...&lt;/a&gt;&amp;gt; wrote:
&lt;br&gt;&amp;gt; &amp;gt; &amp;gt; This ties the castle code base to .NET 3.5, was this intentional?
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; &amp;gt; &amp;gt; ---------- Forwarded message ----------
&lt;br&gt;&amp;gt; &amp;gt; &amp;gt; From: &amp;lt;&lt;a href=&quot;http://www.nabble.com/user/SendEmail.jtp?type=post&amp;post=19945541&amp;i=3&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;notificat...@...&lt;/a&gt;&amp;gt;
&lt;br&gt;&amp;gt; &amp;gt; &amp;gt; Date: Sun, Oct 12, 2008 at 7:04 AM
&lt;br&gt;&amp;gt; &amp;gt; &amp;gt; Subject: [hammett commit: 5376]:
&lt;br&gt;&amp;gt; &amp;gt; &amp;gt; /trunk/InversionOfControl/Castle.MicroKernel/
&lt;br&gt;&amp;gt; &amp;gt; &amp;gt; To: &lt;a href=&quot;http://www.nabble.com/user/SendEmail.jtp?type=post&amp;post=19945541&amp;i=4&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;castle-project-commits@...&lt;/a&gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; &amp;gt; &amp;gt; User: hammett
&lt;br&gt;&amp;gt; &amp;gt; &amp;gt; Date: 2008/10/11 10:04 PM
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; &amp;gt; &amp;gt; Modified:
&lt;br&gt;&amp;gt; &amp;gt; &amp;gt;  /trunk/InversionOfControl/Castle.MicroKernel/
&lt;br&gt;&amp;gt; &amp;gt; &amp;gt;  Castle.MicroKernel-vs2008.csproj
&lt;br&gt;&amp;gt; &amp;gt; &amp;gt;  /trunk/InversionOfControl/Castle.MicroKernel/Releasers/
&lt;br&gt;&amp;gt; &amp;gt; &amp;gt;  AllComponentsReleasePolicy.cs
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; &amp;gt; &amp;gt; Log:
&lt;br&gt;&amp;gt; &amp;gt; &amp;gt;  Changed to use ReaderWriterLockSlim - see
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; &amp;gt;&lt;a href=&quot;http://www.bluebytesoftware.com/blog/PermaLink,guid,c4ea3d6d-190a-48f&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://www.bluebytesoftware.com/blog/PermaLink,guid,c4ea3d6d-190a-48f&lt;/a&gt;...
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; &amp;gt; &amp;gt; File Changes:
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; &amp;gt; &amp;gt; Directory: /trunk/InversionOfControl/Castle.MicroKernel/
&lt;br&gt;&amp;gt; &amp;gt; &amp;gt; ========================================================
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; &amp;gt; &amp;gt; File [modified]: Castle.MicroKernel-vs2008.csproj
&lt;br&gt;&amp;gt; &amp;gt; &amp;gt; Delta lines: +83 -79
&lt;br&gt;&amp;gt; &amp;gt; &amp;gt; ===================================================================
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; &amp;gt; &amp;gt; ---
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; &amp;gt; trunk/InversionOfControl/Castle.MicroKernel/Releasers/AllComponentsReleaseP olicy.cs
&lt;br&gt;&amp;gt; &amp;gt; &amp;gt; 2008-10-10 23:14:31 UTC (rev 5375)
&lt;br&gt;&amp;gt; &amp;gt; &amp;gt; +++
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; &amp;gt; trunk/InversionOfControl/Castle.MicroKernel/Releasers/AllComponentsReleaseP olicy.cs
&lt;br&gt;&amp;gt; &amp;gt; &amp;gt; 2008-10-12 05:04:37 UTC (rev 5376)
&lt;br&gt;&amp;gt; &amp;gt; &amp;gt; @@ -12,103 +12,107 @@
&lt;br&gt;&amp;gt; &amp;gt; &amp;gt;  // See the License for the specific language governing permissions and
&lt;br&gt;&amp;gt; &amp;gt; &amp;gt;  // limitations under the License.
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; &amp;gt; &amp;gt; -using System.Threading;
&lt;br&gt;&amp;gt; &amp;gt; &amp;gt; -
&lt;br&gt;&amp;gt; &amp;gt; &amp;gt;  namespace Castle.MicroKernel.Releasers
&lt;br&gt;&amp;gt; &amp;gt; &amp;gt;  {
&lt;br&gt;&amp;gt; &amp;gt; &amp;gt; -    using System;
&lt;br&gt;&amp;gt; &amp;gt; &amp;gt; -    using System.Collections;
&lt;br&gt;&amp;gt; &amp;gt; &amp;gt; +       using System;
&lt;br&gt;&amp;gt; &amp;gt; &amp;gt; +       using System.Collections;
&lt;br&gt;&amp;gt; &amp;gt; &amp;gt; +       using System.Threading;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; &amp;gt; &amp;gt; -    [Serializable]
&lt;br&gt;&amp;gt; &amp;gt; &amp;gt; -    public class AllComponentsReleasePolicy : IReleasePolicy
&lt;br&gt;&amp;gt; &amp;gt; &amp;gt; -    {
&lt;br&gt;&amp;gt; &amp;gt; &amp;gt; -        private readonly IDictionary instance2Burden =
&lt;br&gt;&amp;gt; &amp;gt; &amp;gt; -            new Hashtable(new Util.ReferenceEqualityComparer());
&lt;br&gt;&amp;gt; &amp;gt; &amp;gt; +       [Serializable]
&lt;br&gt;&amp;gt; &amp;gt; &amp;gt; +       public class AllComponentsReleasePolicy : IReleasePolicy
&lt;br&gt;&amp;gt; &amp;gt; &amp;gt; +       {
&lt;br&gt;&amp;gt; &amp;gt; &amp;gt; +               private readonly IDictionary instance2Burden =
&lt;br&gt;&amp;gt; &amp;gt; &amp;gt; +                       new Hashtable(new
&lt;br&gt;&amp;gt; &amp;gt; Util.ReferenceEqualityComparer());
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; &amp;gt; &amp;gt; -        readonly ReaderWriterLock rwLock = new ReaderWriterLock();
&lt;br&gt;&amp;gt; &amp;gt; &amp;gt; +               private readonly ReaderWriterLockSlim rwLock = new
&lt;br&gt;&amp;gt; &amp;gt; &amp;gt; ReaderWriterLockSlim(LockRecursionPolicy.SupportsRecursion);
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; &amp;gt; &amp;gt; -        public virtual void Track(object instance, Burden burden)
&lt;br&gt;&amp;gt; &amp;gt; &amp;gt; -        {
&lt;br&gt;&amp;gt; &amp;gt; &amp;gt; -            rwLock.AcquireWriterLock(Timeout.Infinite);
&lt;br&gt;&amp;gt; &amp;gt; &amp;gt; -            try
&lt;br&gt;&amp;gt; &amp;gt; &amp;gt; -            {
&lt;br&gt;&amp;gt; &amp;gt; &amp;gt; -                instance2Burden[instance] = burden;
&lt;br&gt;&amp;gt; &amp;gt; &amp;gt; -            }
&lt;br&gt;&amp;gt; &amp;gt; &amp;gt; -            finally
&lt;br&gt;&amp;gt; &amp;gt; &amp;gt; -            {
&lt;br&gt;&amp;gt; &amp;gt; &amp;gt; -                rwLock.ReleaseWriterLock();
&lt;br&gt;&amp;gt; &amp;gt; &amp;gt; -            }
&lt;br&gt;&amp;gt; &amp;gt; &amp;gt; -        }
&lt;br&gt;&amp;gt; &amp;gt; &amp;gt; +               public virtual void Track(object instance, Burden burden)
&lt;br&gt;&amp;gt; &amp;gt; &amp;gt; +               {
&lt;br&gt;&amp;gt; &amp;gt; &amp;gt; +                       rwLock.EnterWriteLock();
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; &amp;gt; &amp;gt; -        public bool HasTrack(object instance)
&lt;br&gt;&amp;gt; &amp;gt; &amp;gt; -        {
&lt;br&gt;&amp;gt; &amp;gt; &amp;gt; -            if (instance == null) throw new
&lt;br&gt;&amp;gt; &amp;gt; &amp;gt; ArgumentNullException(&amp;quot;instance&amp;quot;);
&lt;br&gt;&amp;gt; &amp;gt; &amp;gt; -            rwLock.AcquireReaderLock(Timeout.Infinite);
&lt;br&gt;&amp;gt; &amp;gt; &amp;gt; -            try
&lt;br&gt;&amp;gt; &amp;gt; &amp;gt; -            {
&lt;br&gt;&amp;gt; &amp;gt; &amp;gt; -                return instance2Burden.Contains(instance);
&lt;br&gt;&amp;gt; &amp;gt; &amp;gt; -            }
&lt;br&gt;&amp;gt; &amp;gt; &amp;gt; -            finally
&lt;br&gt;&amp;gt; &amp;gt; &amp;gt; -            {
&lt;br&gt;&amp;gt; &amp;gt; &amp;gt; -                rwLock.ReleaseReaderLock();
&lt;br&gt;&amp;gt; &amp;gt; &amp;gt; -            }
&lt;br&gt;&amp;gt; &amp;gt; &amp;gt; -        }
&lt;br&gt;&amp;gt; &amp;gt; &amp;gt; +                       try
&lt;br&gt;&amp;gt; &amp;gt; &amp;gt; +                       {
&lt;br&gt;&amp;gt; &amp;gt; &amp;gt; +                               instance2Burden[instance] = burden;
&lt;br&gt;&amp;gt; &amp;gt; &amp;gt; +                       }
&lt;br&gt;&amp;gt; &amp;gt; &amp;gt; +                       finally
&lt;br&gt;&amp;gt; &amp;gt; &amp;gt; +                       {
&lt;br&gt;&amp;gt; &amp;gt; &amp;gt; +                               rwLock.ExitWriteLock();
&lt;br&gt;&amp;gt; &amp;gt; &amp;gt; +                       }
&lt;br&gt;&amp;gt; &amp;gt; &amp;gt; +               }
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; &amp;gt; &amp;gt; -        public void Release(object instance)
&lt;br&gt;&amp;gt; &amp;gt; &amp;gt; -        {
&lt;br&gt;&amp;gt; &amp;gt; &amp;gt; -            if (instance == null) throw new
&lt;br&gt;&amp;gt; &amp;gt; &amp;gt; ArgumentNullException(&amp;quot;instance&amp;quot;);
&lt;br&gt;&amp;gt; &amp;gt; &amp;gt; -            rwLock.AcquireReaderLock(Timeout.Infinite);
&lt;br&gt;&amp;gt; &amp;gt; &amp;gt; -            try
&lt;br&gt;&amp;gt; &amp;gt; &amp;gt; -            {
&lt;br&gt;&amp;gt; &amp;gt; &amp;gt; -                var burden = (Burden)instance2Burden[instance];
&lt;br&gt;&amp;gt; &amp;gt; &amp;gt; +               public bool HasTrack(object instance)
&lt;br&gt;&amp;gt; &amp;gt; &amp;gt; +               {
&lt;br&gt;&amp;gt; &amp;gt; &amp;gt; +                       if (instance == null) throw new
&lt;br&gt;&amp;gt; &amp;gt; &amp;gt; ArgumentNullException(&amp;quot;instance&amp;quot;);
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; &amp;gt; &amp;gt; -                if (burden == null)
&lt;br&gt;&amp;gt; &amp;gt; &amp;gt; -                    return;
&lt;br&gt;&amp;gt; &amp;gt; &amp;gt; +                       rwLock.EnterReadLock();
&lt;br&gt;&amp;gt; &amp;gt; &amp;gt; +                       try
&lt;br&gt;&amp;gt; &amp;gt; &amp;gt; +                       {
&lt;br&gt;&amp;gt; &amp;gt; &amp;gt; +                               return
&lt;br&gt;&amp;gt; &amp;gt; instance2Burden.Contains(instance);
&lt;br&gt;&amp;gt; &amp;gt; &amp;gt; +                       }
&lt;br&gt;&amp;gt; &amp;gt; &amp;gt; +                       finally
&lt;br&gt;&amp;gt; &amp;gt; &amp;gt; +                       {
&lt;br&gt;&amp;gt; &amp;gt; &amp;gt; +                               rwLock.ExitReadLock();
&lt;br&gt;&amp;gt; &amp;gt; &amp;gt; +                       }
&lt;br&gt;&amp;gt; &amp;gt; &amp;gt; +               }
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; &amp;gt; &amp;gt; -                LockCookie cookie =
&lt;br&gt;&amp;gt; &amp;gt; &amp;gt; rwLock.UpgradeToWriterLock(Timeout.Infinite);
&lt;br&gt;&amp;gt; &amp;gt; &amp;gt; +               public void Release(object instance)
&lt;br&gt;&amp;gt; &amp;gt; &amp;gt; +               {
&lt;br&gt;&amp;gt; &amp;gt; &amp;gt; +                       if (instance == null) throw new
&lt;br&gt;&amp;gt; &amp;gt; &amp;gt; ArgumentNullException(&amp;quot;instance&amp;quot;);
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; &amp;gt; &amp;gt; -                try
&lt;br&gt;&amp;gt; &amp;gt; &amp;gt; -                {
&lt;br&gt;&amp;gt; &amp;gt; &amp;gt; -                    burden = (Burden)instance2Burden[instance];
&lt;br&gt;&amp;gt; &amp;gt; &amp;gt; -                    if (burden == null)
&lt;br&gt;&amp;gt; &amp;gt; &amp;gt; -                        return;
&lt;br&gt;&amp;gt; &amp;gt; &amp;gt; +                       rwLock.EnterUpgradeableReadLock();
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; &amp;gt; &amp;gt; -                    instance2Burden.Remove(instance);
&lt;br&gt;&amp;gt; &amp;gt; &amp;gt; +                       try
&lt;br&gt;&amp;gt; &amp;gt; &amp;gt; +                       {
&lt;br&gt;&amp;gt; &amp;gt; &amp;gt; +                               var burden = (Burden)
&lt;br&gt;&amp;gt; &amp;gt; &amp;gt; instance2Burden[instance];
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; &amp;gt; &amp;gt; -                    burden.Release(this);
&lt;br&gt;&amp;gt; &amp;gt; &amp;gt; -                }
&lt;br&gt;&amp;gt; &amp;gt; &amp;gt; -                finally
&lt;br&gt;&amp;gt; &amp;gt; &amp;gt; -                {
&lt;br&gt;&amp;gt; &amp;gt; &amp;gt; -                    rwLock.DowngradeFromWriterLock(ref cookie);
&lt;br&gt;&amp;gt; &amp;gt; &amp;gt; -                }
&lt;br&gt;&amp;gt; &amp;gt; &amp;gt; -            }
&lt;br&gt;&amp;gt; &amp;gt; &amp;gt; -            finally
&lt;br&gt;&amp;gt; &amp;gt; &amp;gt; -            {
&lt;br&gt;&amp;gt; &amp;gt; &amp;gt; -                rwLock.ReleaseReaderLock();
&lt;br&gt;&amp;gt; &amp;gt; &amp;gt; -            }
&lt;br&gt;&amp;gt; &amp;gt; &amp;gt; -        }
&lt;br&gt;&amp;gt; &amp;gt; &amp;gt; +                               if (burden == null)
&lt;br&gt;&amp;gt; &amp;gt; &amp;gt; +                                       return;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; &amp;gt; &amp;gt; -        public void Dispose()
&lt;br&gt;&amp;gt; &amp;gt; &amp;gt; -        {
&lt;br&gt;&amp;gt; &amp;gt; &amp;gt; -            rwLock.AcquireWriterLock(Timeout.Infinite);
&lt;br&gt;&amp;gt; &amp;gt; &amp;gt; -            try
&lt;br&gt;&amp;gt; &amp;gt; &amp;gt; -            {
&lt;br&gt;&amp;gt; &amp;gt; &amp;gt; +                               rwLock.EnterWriteLock();
&lt;br&gt;&amp;gt; &amp;gt; &amp;gt; +
&lt;br&gt;&amp;gt; &amp;gt; &amp;gt; +                               try
&lt;br&gt;&amp;gt; &amp;gt; &amp;gt; +                               {
&lt;br&gt;&amp;gt; &amp;gt; &amp;gt; +                                       burden = (Burden)
&lt;br&gt;&amp;gt; &amp;gt; &amp;gt; instance2Burden[instance];
&lt;br&gt;&amp;gt; &amp;gt; &amp;gt; +                                       if (burden == null)
&lt;br&gt;&amp;gt; &amp;gt; &amp;gt; +                                               return;
&lt;br&gt;&amp;gt; &amp;gt; &amp;gt; +
&lt;br&gt;&amp;gt; &amp;gt; &amp;gt; +                                       instance2Burden.Remove(instance);
&lt;br&gt;&amp;gt; &amp;gt; &amp;gt; +
&lt;br&gt;&amp;gt; &amp;gt; &amp;gt; +                                       burden.Release(this);
&lt;br&gt;&amp;gt; &amp;gt; &amp;gt; +                               }
&lt;br&gt;&amp;gt; &amp;gt; &amp;gt; +                               finally
&lt;br&gt;&amp;gt; &amp;gt; &amp;gt; +                               {
&lt;br&gt;&amp;gt; &amp;gt; &amp;gt; +                                       rwLock.ExitWriteLock();
&lt;br&gt;&amp;gt; &amp;gt; &amp;gt; +                               }
&lt;br&gt;&amp;gt; &amp;gt; &amp;gt; +                       }
&lt;br&gt;&amp;gt; &amp;gt; &amp;gt; +                       finally
&lt;br&gt;&amp;gt; &amp;gt; &amp;gt; +                       {
&lt;br&gt;&amp;gt; &amp;gt; &amp;gt; +                               rwLock.ExitUpgradeableReadLock();
&lt;br&gt;&amp;gt; &amp;gt; &amp;gt; +                       }
&lt;br&gt;&amp;gt; &amp;gt; &amp;gt; +               }
&lt;br&gt;&amp;gt; &amp;gt; &amp;gt; +
&lt;br&gt;&amp;gt; &amp;gt; &amp;gt; +               public void Dispose()
&lt;br&gt;&amp;gt; &amp;gt; &amp;gt; +               {
&lt;br&gt;&amp;gt; &amp;gt; &amp;gt; +                       rwLock.EnterWriteLock();
&lt;br&gt;&amp;gt; &amp;gt; &amp;gt; +
&lt;br&gt;&amp;gt; &amp;gt; &amp;gt; +                       try
&lt;br&gt;&amp;gt; &amp;gt; &amp;gt; +                       {
&lt;br&gt;&amp;gt; &amp;gt; &amp;gt;                                Burden[] burdens = new
&lt;br&gt;&amp;gt; &amp;gt; &amp;gt; Burden[instance2Burden.Count];
&lt;br&gt;&amp;gt; &amp;gt; &amp;gt;                                instance2Burden.Values.CopyTo(burdens, 0);
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; &amp;gt; &amp;gt; -                foreach (Burden burden in burdens)
&lt;br&gt;&amp;gt; &amp;gt; &amp;gt; -                {
&lt;br&gt;&amp;gt; &amp;gt; &amp;gt; +                               foreach(Burden burden in burdens)
&lt;br&gt;&amp;gt; &amp;gt; &amp;gt; +                               {
&lt;br&gt;&amp;gt; &amp;gt; &amp;gt;                                        if
&lt;br&gt;&amp;gt; &amp;gt; (instance2Burden.Contains(burden))
&lt;br&gt;&amp;gt; &amp;gt; &amp;gt;                                        {
&lt;br&gt;&amp;gt; &amp;gt; &amp;gt;                                                burden.Release(this);
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; &amp;gt; &amp;gt;  instance2Burden.Remove(burden);
&lt;br&gt;&amp;gt; &amp;gt; &amp;gt;                                        }
&lt;br&gt;&amp;gt; &amp;gt; &amp;gt; -                }
&lt;br&gt;&amp;gt; &amp;gt; &amp;gt; -            }
&lt;br&gt;&amp;gt; &amp;gt; &amp;gt; -            finally
&lt;br&gt;&amp;gt; &amp;gt; &amp;gt; -            {
&lt;br&gt;&amp;gt; &amp;gt; &amp;gt; -                rwLock.ReleaseWriterLock();
&lt;br&gt;&amp;gt; &amp;gt; &amp;gt; -            }
&lt;br&gt;&amp;gt; &amp;gt; &amp;gt; -        }
&lt;br&gt;&amp;gt; &amp;gt; &amp;gt; -    }
&lt;br&gt;&amp;gt; &amp;gt; &amp;gt; -}
&lt;br&gt;&amp;gt; &amp;gt; &amp;gt; +                               }
&lt;br&gt;&amp;gt; &amp;gt; &amp;gt; +                       }
&lt;br&gt;&amp;gt; &amp;gt; &amp;gt; +                       finally
&lt;br&gt;&amp;gt; &amp;gt; &amp;gt; +                       {
&lt;br&gt;&amp;gt; &amp;gt; &amp;gt; +                               rwLock.ExitWriteLock();
&lt;br&gt;&amp;gt; &amp;gt; &amp;gt; +                       }
&lt;br&gt;&amp;gt; &amp;gt; &amp;gt; +               }
&lt;br&gt;&amp;gt; &amp;gt; &amp;gt; +       }
&lt;br&gt;&amp;gt; &amp;gt; &amp;gt; +}
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; &amp;gt; &amp;gt; Directory: /trunk/InversionOfControl/Castle.MicroKernel/Releasers/
&lt;br&gt;&amp;gt; &amp;gt; &amp;gt; ==================================================================
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; &amp;gt; &amp;gt; File [modified]: AllComponentsReleasePolicy.cs
&lt;br&gt;&amp;gt; &amp;gt; &amp;gt; Delta lines: +0 -0
&lt;br&gt;&amp;gt; &amp;gt; &amp;gt; ===================================================================
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; &amp;gt; --
&lt;br&gt;&amp;gt; &amp;gt; Cheers,
&lt;br&gt;&amp;gt; &amp;gt; hammett
&lt;br&gt;&amp;gt; &amp;gt;&lt;a href=&quot;http://hammett.castleproject.org/&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://hammett.castleproject.org/&lt;/a&gt;&lt;/div&gt;--~--~---------~--~----~------------~-------~--~----~
&lt;br&gt;You received this message because you are subscribed to the Google Groups &amp;quot;Castle Project Development List&amp;quot; group.
&lt;br&gt;To post to this group, send email to &lt;a href=&quot;http://www.nabble.com/user/SendEmail.jtp?type=post&amp;post=19945541&amp;i=5&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;castle-project-devel@...&lt;/a&gt;
&lt;br&gt;To unsubscribe from this group, send email to &lt;a href=&quot;http://www.nabble.com/user/SendEmail.jtp?type=post&amp;post=19945541&amp;i=6&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;castle-project-devel+unsubscribe@...&lt;/a&gt;
&lt;br&gt;For more options, visit this group at &lt;a href=&quot;http://groups.google.com/group/castle-project-devel?hl=en&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://groups.google.com/group/castle-project-devel?hl=en&lt;/a&gt;&lt;br&gt;-~----------~----~----~----~------~----~------~--~---
&lt;br&gt;&lt;br&gt;&lt;p&gt;From forum: &lt;a href=&quot;http://www.nabble.com/Castle-Dev-f15384.html&quot; embed=&quot;fixTarget[15384]&quot; target=&quot;_top&quot; &gt;Castle Dev&lt;/a&gt;&lt;/p&gt;</content>
	<link rel="alternate" type="text/html" href="http://www.nabble.com/Fwd%3A--hammett-commit%3A-5376-%3A--trunk-InversionOfControl-Castle.MicroKernel--tp19941211p19945541.html" />
</entry>

<entry>
	<id>tag:www.nabble.com,2006:post-19943709</id>
	<title>Re: [hammett commit: 5376]: /trunk/InversionOfControl/Castle.MicroKernel/</title>
	<published>2008-10-12T10:20:31Z</published>
	<updated>2008-10-12T10:20:31Z</updated>
	<author>
		<name>Ayende Rahien-2</name>
	</author>
	<content type="html">&lt;div dir=&quot;ltr&quot;&gt;I think it was for C# 3.0 features, not .net 3.5&amp;nbsp;&lt;div&gt;.net-2.0&amp;nbsp;compatibility&amp;nbsp;is still important, I think.&lt;/div&gt;&lt;div&gt;We can use #ifdef again, I suppose.&lt;br&gt;&lt;br&gt;&lt;div class=&quot;gmail_quote&quot;&gt;On Sun, Oct 12, 2008 at 6:35 PM, hammett &lt;span dir=&quot;ltr&quot;&gt;&amp;lt;&lt;a href=&quot;http://www.nabble.com/user/SendEmail.jtp?type=post&amp;post=19943709&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;hammett@...&lt;/a&gt;&amp;gt;&lt;/span&gt; wrote:&lt;br&gt;
&lt;blockquote class=&quot;gmail_quote&quot; style=&quot;margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;&quot;&gt;&lt;br&gt;
I thought we have held a vote on that recently...&lt;br&gt;
&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div class=&quot;Wj3C7c&quot;&gt;&lt;br&gt;
On Sun, Oct 12, 2008 at 5:25 AM, Ayende Rahien &amp;lt;&lt;a href=&quot;http://www.nabble.com/user/SendEmail.jtp?type=post&amp;post=19943709&amp;i=1&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;ayende@...&lt;/a&gt;&amp;gt; wrote:&lt;br&gt;
&amp;gt; This ties the castle code base to .NET 3.5, was this intentional?&lt;br&gt;
&amp;gt;&lt;br&gt;
&amp;gt; ---------- Forwarded message ----------&lt;br&gt;
&amp;gt; From: &amp;lt;&lt;a href=&quot;http://www.nabble.com/user/SendEmail.jtp?type=post&amp;post=19943709&amp;i=2&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;notification@...&lt;/a&gt;&amp;gt;&lt;br&gt;
&amp;gt; Date: Sun, Oct 12, 2008 at 7:04 AM&lt;br&gt;
&amp;gt; Subject: [hammett commit: 5376]:&lt;br&gt;
&amp;gt; /trunk/InversionOfControl/Castle.MicroKernel/&lt;br&gt;
&amp;gt; To: &lt;a href=&quot;http://www.nabble.com/user/SendEmail.jtp?type=post&amp;post=19943709&amp;i=3&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;castle-project-commits@...&lt;/a&gt;&lt;br&gt;
&amp;gt;&lt;br&gt;
&amp;gt;&lt;br&gt;
&amp;gt;&lt;br&gt;
&amp;gt; User: hammett&lt;br&gt;
&amp;gt; Date: 2008/10/11 10:04 PM&lt;br&gt;
&amp;gt;&lt;br&gt;
&amp;gt; Modified:&lt;br&gt;
&amp;gt; &amp;nbsp;/trunk/InversionOfControl/Castle.MicroKernel/&lt;br&gt;
&amp;gt; &amp;nbsp;Castle.MicroKernel-vs2008.csproj&lt;br&gt;
&amp;gt; &amp;nbsp;/trunk/InversionOfControl/Castle.MicroKernel/Releasers/&lt;br&gt;
&amp;gt; &amp;nbsp;AllComponentsReleasePolicy.cs&lt;br&gt;
&amp;gt;&lt;br&gt;
&amp;gt; Log:&lt;br&gt;
&amp;gt; &amp;nbsp;Changed to use ReaderWriterLockSlim - see&lt;br&gt;
&amp;gt; &lt;a href=&quot;http://www.bluebytesoftware.com/blog/PermaLink,guid,c4ea3d6d-190a-48f8-a677-44a438d8386b.aspx&quot; target=&quot;_blank&quot; rel=&quot;nofollow&quot;&gt;http://www.bluebytesoftware.com/blog/PermaLink,guid,c4ea3d6d-190a-48f8-a677-44a438d8386b.aspx&lt;/a&gt;&lt;br&gt;

&amp;gt;&lt;br&gt;
&amp;gt; File Changes:&lt;br&gt;
&amp;gt;&lt;br&gt;
&amp;gt; Directory: /trunk/InversionOfControl/Castle.MicroKernel/&lt;br&gt;
&amp;gt; ========================================================&lt;br&gt;
&amp;gt;&lt;br&gt;
&amp;gt; File [modified]: Castle.MicroKernel-vs2008.csproj&lt;br&gt;
&amp;gt; Delta lines: +83 -79&lt;br&gt;
&amp;gt; ===================================================================&lt;br&gt;
&amp;gt;&lt;br&gt;
&amp;gt; ---&lt;br&gt;
&amp;gt; trunk/InversionOfControl/Castle.MicroKernel/Releasers/AllComponentsReleasePolicy.cs&lt;br&gt;
&amp;gt; 2008-10-10 23:14:31 UTC (rev 5375)&lt;br&gt;
&amp;gt; +++&lt;br&gt;
&amp;gt; trunk/InversionOfControl/Castle.MicroKernel/Releasers/AllComponentsReleasePolicy.cs&lt;br&gt;
&amp;gt; 2008-10-12 05:04:37 UTC (rev 5376)&lt;br&gt;
&amp;gt; @@ -12,103 +12,107 @@&lt;br&gt;
&amp;gt; &amp;nbsp;// See the License for the specific language governing permissions and&lt;br&gt;
&amp;gt; &amp;nbsp;// limitations under the License.&lt;br&gt;
&amp;gt;&lt;br&gt;
&amp;gt; -using System.Threading;&lt;br&gt;
&amp;gt; -&lt;br&gt;
&amp;gt; &amp;nbsp;namespace Castle.MicroKernel.Releasers&lt;br&gt;
&amp;gt; &amp;nbsp;{&lt;br&gt;
&amp;gt; - &amp;nbsp; &amp;nbsp;using System;&lt;br&gt;
&amp;gt; - &amp;nbsp; &amp;nbsp;using System.Collections;&lt;br&gt;
&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; using System;&lt;br&gt;
&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; using System.Collections;&lt;br&gt;
&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; using System.Threading;&lt;br&gt;
&amp;gt;&lt;br&gt;
&amp;gt; - &amp;nbsp; &amp;nbsp;[Serializable]&lt;br&gt;
&amp;gt; - &amp;nbsp; &amp;nbsp;public class AllComponentsReleasePolicy : IReleasePolicy&lt;br&gt;
&amp;gt; - &amp;nbsp; &amp;nbsp;{&lt;br&gt;
&amp;gt; - &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;private readonly IDictionary instance2Burden =&lt;br&gt;
&amp;gt; - &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;new Hashtable(new Util.ReferenceEqualityComparer());&lt;br&gt;
&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; [Serializable]&lt;br&gt;
&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; public class AllComponentsReleasePolicy : IReleasePolicy&lt;br&gt;
&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; {&lt;br&gt;
&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; private readonly IDictionary instance2Burden =&lt;br&gt;
&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; new Hashtable(new Util.ReferenceEqualityComparer());&lt;br&gt;
&amp;gt;&lt;br&gt;
&amp;gt; - &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;readonly ReaderWriterLock rwLock = new ReaderWriterLock();&lt;br&gt;
&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; private readonly ReaderWriterLockSlim rwLock = new&lt;br&gt;
&amp;gt; ReaderWriterLockSlim(LockRecursionPolicy.SupportsRecursion);&lt;br&gt;
&amp;gt;&lt;br&gt;
&amp;gt; - &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;public virtual void Track(object instance, Burden burden)&lt;br&gt;
&amp;gt; - &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;{&lt;br&gt;
&amp;gt; - &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;rwLock.AcquireWriterLock(Timeout.Infinite);&lt;br&gt;
&amp;gt; - &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;try&lt;br&gt;
&amp;gt; - &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;{&lt;br&gt;
&amp;gt; - &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;instance2Burden[instance] = burden;&lt;br&gt;
&amp;gt; - &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}&lt;br&gt;
&amp;gt; - &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;finally&lt;br&gt;
&amp;gt; - &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;{&lt;br&gt;
&amp;gt; - &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;rwLock.ReleaseWriterLock();&lt;br&gt;
&amp;gt; - &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}&lt;br&gt;
&amp;gt; - &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}&lt;br&gt;
&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; public virtual void Track(object instance, Burden burden)&lt;br&gt;
&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {&lt;br&gt;
&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; rwLock.EnterWriteLock();&lt;br&gt;
&amp;gt;&lt;br&gt;
&amp;gt; - &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;public bool HasTrack(object instance)&lt;br&gt;
&amp;gt; - &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;{&lt;br&gt;
&amp;gt; - &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if (instance == null) throw new&lt;br&gt;
&amp;gt; ArgumentNullException(&amp;quot;instance&amp;quot;);&lt;br&gt;
&amp;gt; - &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;rwLock.AcquireReaderLock(Timeout.Infinite);&lt;br&gt;
&amp;gt; - &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;try&lt;br&gt;
&amp;gt; - &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;{&lt;br&gt;
&amp;gt; - &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;return instance2Burden.Contains(instance);&lt;br&gt;
&amp;gt; - &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}&lt;br&gt;
&amp;gt; - &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;finally&lt;br&gt;
&amp;gt; - &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;{&lt;br&gt;
&amp;gt; - &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;rwLock.ReleaseReaderLock();&lt;br&gt;
&amp;gt; - &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}&lt;br&gt;
&amp;gt; - &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}&lt;br&gt;
&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; try&lt;br&gt;
&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {&lt;br&gt;
&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; instance2Burden[instance] = burden;&lt;br&gt;
&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;br&gt;
&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; finally&lt;br&gt;
&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {&lt;br&gt;
&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; rwLock.ExitWriteLock();&lt;br&gt;
&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;br&gt;
&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;br&gt;
&amp;gt;&lt;br&gt;
&amp;gt; - &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;public void Release(object instance)&lt;br&gt;
&amp;gt; - &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;{&lt;br&gt;
&amp;gt; - &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if (instance == null) throw new&lt;br&gt;
&amp;gt; ArgumentNullException(&amp;quot;instance&amp;quot;);&lt;br&gt;
&amp;gt; - &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;rwLock.AcquireReaderLock(Timeout.Infinite);&lt;br&gt;
&amp;gt; - &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;try&lt;br&gt;
&amp;gt; - &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;{&lt;br&gt;
&amp;gt; - &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;var burden = (Burden)instance2Burden[instance];&lt;br&gt;
&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; public bool HasTrack(object instance)&lt;br&gt;
&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {&lt;br&gt;
&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if (instance == null) throw new&lt;br&gt;
&amp;gt; ArgumentNullException(&amp;quot;instance&amp;quot;);&lt;br&gt;
&amp;gt;&lt;br&gt;
&amp;gt; - &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if (burden == null)&lt;br&gt;
&amp;gt; - &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;return;&lt;br&gt;
&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; rwLock.EnterReadLock();&lt;br&gt;
&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; try&lt;br&gt;
&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {&lt;br&gt;
&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; return instance2Burden.Contains(instance);&lt;br&gt;
&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;br&gt;
&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; finally&lt;br&gt;
&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {&lt;br&gt;
&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; rwLock.ExitReadLock();&lt;br&gt;
&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;br&gt;
&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;br&gt;
&amp;gt;&lt;br&gt;
&amp;gt; - &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;LockCookie cookie =&lt;br&gt;
&amp;gt; rwLock.UpgradeToWriterLock(Timeout.Infinite);&lt;br&gt;
&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; public void Release(object instance)&lt;br&gt;
&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {&lt;br&gt;
&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if (instance == null) throw new&lt;br&gt;
&amp;gt; ArgumentNullException(&amp;quot;instance&amp;quot;);&lt;br&gt;
&amp;gt;&lt;br&gt;
&amp;gt; - &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;try&lt;br&gt;
&amp;gt; - &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;{&lt;br&gt;
&amp;gt; - &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;burden = (Burden)instance2Burden[instance];&lt;br&gt;
&amp;gt; - &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if (burden == null)&lt;br&gt;
&amp;gt; - &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;return;&lt;br&gt;
&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; rwLock.EnterUpgradeableReadLock();&lt;br&gt;
&amp;gt;&lt;br&gt;
&amp;gt; - &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;instance2Burden.Remove(instance);&lt;br&gt;
&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; try&lt;br&gt;
&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {&lt;br&gt;
&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; var burden = (Burden)&lt;br&gt;
&amp;gt; instance2Burden[instance];&lt;br&gt;
&amp;gt;&lt;br&gt;
&amp;gt; - &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;burden.Release(this);&lt;br&gt;
&amp;gt; - &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}&lt;br&gt;
&amp;gt; - &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;finally&lt;br&gt;
&amp;gt; - &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;{&lt;br&gt;
&amp;gt; - &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;rwLock.DowngradeFromWriterLock(ref cookie);&lt;br&gt;
&amp;gt; - &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}&lt;br&gt;
&amp;gt; - &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}&lt;br&gt;
&amp;gt; - &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;finally&lt;br&gt;
&amp;gt; - &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;{&lt;br&gt;
&amp;gt; - &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;rwLock.ReleaseReaderLock();&lt;br&gt;
&amp;gt; - &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}&lt;br&gt;
&amp;gt; - &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}&lt;br&gt;
&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if (burden == null)&lt;br&gt;
&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; return;&lt;br&gt;
&amp;gt;&lt;br&gt;
&amp;gt; - &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;public void Dispose()&lt;br&gt;
&amp;gt; - &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;{&lt;br&gt;
&amp;gt; - &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;rwLock.AcquireWriterLock(Timeout.Infinite);&lt;br&gt;
&amp;gt; - &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;try&lt;br&gt;
&amp;gt; - &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;{&lt;br&gt;
&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; rwLock.EnterWriteLock();&lt;br&gt;
&amp;gt; +&lt;br&gt;
&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; try&lt;br&gt;
&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {&lt;br&gt;
&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; burden = (Burden)&lt;br&gt;
&amp;gt; instance2Burden[instance];&lt;br&gt;
&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if (burden == null)&lt;br&gt;
&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; return;&lt;br&gt;
&amp;gt; +&lt;br&gt;
&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; instance2Burden.Remove(instance);&lt;br&gt;
&amp;gt; +&lt;br&gt;
&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; burden.Release(this);&lt;br&gt;
&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;br&gt;
&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; finally&lt;br&gt;
&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {&lt;br&gt;
&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; rwLock.ExitWriteLock();&lt;br&gt;
&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;br&gt;
&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;br&gt;
&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; finally&lt;br&gt;
&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {&lt;br&gt;
&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; rwLock.ExitUpgradeableReadLock();&lt;br&gt;
&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;br&gt;
&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;br&gt;
&amp;gt; +&lt;br&gt;
&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; public void Dispose()&lt;br&gt;
&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {&lt;br&gt;
&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; rwLock.EnterWriteLock();&lt;br&gt;
&amp;gt; +&lt;br&gt;
&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; try&lt;br&gt;
&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {&lt;br&gt;
&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Burden[] burdens = new&lt;br&gt;
&amp;gt; Burden[instance2Burden.Count];&lt;br&gt;
&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;instance2Burden.Values.CopyTo(burdens, 0);&lt;br&gt;
&amp;gt;&lt;br&gt;
&amp;gt; - &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;foreach (Burden burden in burdens)&lt;br&gt;
&amp;gt; - &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;{&lt;br&gt;
&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; foreach(Burden burden in burdens)&lt;br&gt;
&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {&lt;br&gt;
&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if (instance2Burden.Contains(burden))&lt;br&gt;
&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;{&lt;br&gt;
&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;burden.Release(this);&lt;br&gt;
&amp;gt;&lt;br&gt;
&amp;gt; &amp;nbsp;instance2Burden.Remove(burden);&lt;br&gt;
&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}&lt;br&gt;
&amp;gt; - &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}&lt;br&gt;
&amp;gt; - &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}&lt;br&gt;
&amp;gt; - &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;finally&lt;br&gt;
&amp;gt; - &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;{&lt;br&gt;
&amp;gt; - &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;rwLock.ReleaseWriterLock();&lt;br&gt;
&amp;gt; - &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}&lt;br&gt;
&amp;gt; - &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}&lt;br&gt;
&amp;gt; - &amp;nbsp; &amp;nbsp;}&lt;br&gt;
&amp;gt; -}&lt;br&gt;
&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;br&gt;
&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;br&gt;
&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; finally&lt;br&gt;
&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {&lt;br&gt;
&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; rwLock.ExitWriteLock();&lt;br&gt;
&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;br&gt;
&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;br&gt;
&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;br&gt;
&amp;gt; +}&lt;br&gt;
&amp;gt;&lt;br&gt;
&amp;gt; Directory: /trunk/InversionOfControl/Castle.MicroKernel/Releasers/&lt;br&gt;
&amp;gt; ==================================================================&lt;br&gt;
&amp;gt;&lt;br&gt;
&amp;gt; File [modified]: AllComponentsReleasePolicy.cs&lt;br&gt;
&amp;gt; Delta lines: +0 -0&lt;br&gt;
&amp;gt; ===================================================================&lt;br&gt;
&amp;gt;&lt;br&gt;
&amp;gt;&lt;br&gt;
&amp;gt;&lt;br&gt;
&amp;gt;&lt;br&gt;
&amp;gt;&lt;br&gt;
&amp;gt; &amp;gt;&lt;br&gt;
&amp;gt;&lt;br&gt;
&lt;br&gt;
&lt;br&gt;
&lt;br&gt;
--&lt;br&gt;
&lt;/div&gt;&lt;/div&gt;Cheers,&lt;br&gt;
hammett&lt;br&gt;
&lt;a href=&quot;http://hammett.castleproject.org/&quot; target=&quot;_blank&quot; rel=&quot;nofollow&quot;&gt;http://hammett.castleproject.org/&lt;/a&gt;&lt;br&gt;
&lt;br&gt;
&lt;br&gt;
&lt;/blockquote&gt;&lt;/div&gt;&lt;br&gt;&lt;/div&gt;&lt;/div&gt;&lt;br&gt;
--~--~---------~--~----~------------~-------~--~----~&lt;br&gt;
You received this message because you are subscribed to the Google Groups &amp;quot;Castle Project Development List&amp;quot; group. &lt;br&gt; To post to this group, send email to &lt;a href=&quot;http://www.nabble.com/user/SendEmail.jtp?type=post&amp;post=19943709&amp;i=4&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;castle-project-devel@...&lt;/a&gt; &lt;br&gt; To unsubscribe from this group, send email to &lt;a href=&quot;http://www.nabble.com/user/SendEmail.jtp?type=post&amp;post=19943709&amp;i=5&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;castle-project-devel+unsubscribe@...&lt;/a&gt; &lt;br&gt; For more options, visit this group at http://groups.google.com/group/castle-project-devel?hl=en &lt;br&gt; -~----------~----~----~----~------~----~------~--~---&lt;br&gt;
&lt;br&gt;
&lt;p&gt;From forum: &lt;a href=&quot;http://www.nabble.com/Castle-Dev-f15384.html&quot; embed=&quot;fixTarget[15384]&quot; target=&quot;_top&quot; &gt;Castle Dev&lt;/a&gt;&lt;/p&gt;</content>
	<link rel="alternate" type="text/html" href="http://www.nabble.com/Fwd%3A--hammett-commit%3A-5376-%3A--trunk-InversionOfControl-Castle.MicroKernel--tp19941211p19943709.html" />
</entry>

<entry>
	<id>tag:www.nabble.com,2006:post-19943440</id>
	<title>Re: [hammett commit: 5376]: /trunk/InversionOfControl/Castle.MicroKernel/</title>
	<published>2008-10-12T09:54:14Z</published>
	<updated>2008-10-12T09:54:14Z</updated>
	<author>
		<name>Ken Egozi</name>
	</author>
	<content type="html">&lt;div dir=&quot;ltr&quot;&gt;well, as it is now, one of the major sell-point of MR over MVC (and NH/AR over EF and Linq2Sql) is 2.0 compatibility&lt;br&gt;&lt;br&gt;maybe it&amp;#39;s time to bring back conditionals?&lt;br&gt;or - call what we have now a 1.0RTM (which will be 2.0 compat) and name the trunk 1.1 unlocking 3.5?&lt;br&gt;
&lt;br&gt;&lt;br&gt;&lt;div class=&quot;gmail_quote&quot;&gt;On Sun, Oct 12, 2008 at 6:48 PM, hammett &lt;span dir=&quot;ltr&quot;&gt;&amp;lt;&lt;a href=&quot;http://www.nabble.com/user/SendEmail.jtp?type=post&amp;post=19943440&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;hammett@...&lt;/a&gt;&amp;gt;&lt;/span&gt; wrote:&lt;br&gt;&lt;blockquote class=&quot;gmail_quote&quot; style=&quot;border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;&quot;&gt;
&lt;br&gt;
Was it? This kinda sucks as our &amp;quot;competitors&amp;quot; can take dependency on&lt;br&gt;
3.5, and there&amp;#39;s 4.0 under the way.&lt;br&gt;
Having compatibility with older frameworks takes much of the fun of&lt;br&gt;
OSS as a place for experimentations.&lt;br&gt;
&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div class=&quot;Wj3C7c&quot;&gt;&lt;br&gt;
On Sun, Oct 12, 2008 at 9:38 AM, Ken Egozi &amp;lt;&lt;a href=&quot;http://www.nabble.com/user/SendEmail.jtp?type=post&amp;post=19943440&amp;i=1&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;egozi13@...&lt;/a&gt;&amp;gt; wrote:&lt;br&gt;
&amp;gt; wasn&amp;#39;t the vote on&lt;br&gt;
&amp;gt; 1. getting rid of 2005 projects&lt;br&gt;
&amp;gt; and&lt;br&gt;
&amp;gt; 2. allowing c#3 language features that can compile to 2.0 (like var and&lt;br&gt;
&amp;gt; initialisers), but *not* System.Core/System.Linq etc&lt;br&gt;
&amp;gt;&lt;br&gt;
&amp;gt; On Sun, Oct 12, 2008 at 6:35 PM, hammett &amp;lt;&lt;a href=&quot;http://www.nabble.com/user/SendEmail.jtp?type=post&amp;post=19943440&amp;i=2&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;hammett@...&lt;/a&gt;&amp;gt; wrote:&lt;br&gt;
&amp;gt;&amp;gt;&lt;br&gt;
&amp;gt;&amp;gt; I thought we have held a vote on that recently...&lt;br&gt;
&amp;gt;&amp;gt;&lt;br&gt;
&amp;gt;&amp;gt; On Sun, Oct 12, 2008 at 5:25 AM, Ayende Rahien &amp;lt;&lt;a href=&quot;http://www.nabble.com/user/SendEmail.jtp?type=post&amp;post=19943440&amp;i=3&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;ayende@...&lt;/a&gt;&amp;gt; wrote:&lt;br&gt;
&amp;gt;&amp;gt; &amp;gt; This ties the castle code base to .NET 3.5, was this intentional?&lt;br&gt;
&amp;gt;&amp;gt; &amp;gt;&lt;br&gt;
&amp;gt;&amp;gt; &amp;gt; ---------- Forwarded message ----------&lt;br&gt;
&amp;gt;&amp;gt; &amp;gt; From: &amp;lt;&lt;a href=&quot;http://www.nabble.com/user/SendEmail.jtp?type=post&amp;post=19943440&amp;i=4&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;notification@...&lt;/a&gt;&amp;gt;&lt;br&gt;
&amp;gt;&amp;gt; &amp;gt; Date: Sun, Oct 12, 2008 at 7:04 AM&lt;br&gt;
&amp;gt;&amp;gt; &amp;gt; Subject: [hammett commit: 5376]:&lt;br&gt;
&amp;gt;&amp;gt; &amp;gt; /trunk/InversionOfControl/Castle.MicroKernel/&lt;br&gt;
&amp;gt;&amp;gt; &amp;gt; To: &lt;a href=&quot;http://www.nabble.com/user/SendEmail.jtp?type=post&amp;post=19943440&amp;i=5&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;castle-project-commits@...&lt;/a&gt;&lt;br&gt;
&amp;gt;&amp;gt; &amp;gt;&lt;br&gt;
&amp;gt;&amp;gt; &amp;gt;&lt;br&gt;
&amp;gt;&amp;gt; &amp;gt;&lt;br&gt;
&amp;gt;&amp;gt; &amp;gt; User: hammett&lt;br&gt;
&amp;gt;&amp;gt; &amp;gt; Date: 2008/10/11 10:04 PM&lt;br&gt;
&amp;gt;&amp;gt; &amp;gt;&lt;br&gt;
&amp;gt;&amp;gt; &amp;gt; Modified:&lt;br&gt;
&amp;gt;&amp;gt; &amp;gt; &amp;nbsp;/trunk/InversionOfControl/Castle.MicroKernel/&lt;br&gt;
&amp;gt;&amp;gt; &amp;gt; &amp;nbsp;Castle.MicroKernel-vs2008.csproj&lt;br&gt;
&amp;gt;&amp;gt; &amp;gt; &amp;nbsp;/trunk/InversionOfControl/Castle.MicroKernel/Releasers/&lt;br&gt;
&amp;gt;&amp;gt; &amp;gt; &amp;nbsp;AllComponentsReleasePolicy.cs&lt;br&gt;
&amp;gt;&amp;gt; &amp;gt;&lt;br&gt;
&amp;gt;&amp;gt; &amp;gt; Log:&lt;br&gt;
&amp;gt;&amp;gt; &amp;gt; &amp;nbsp;Changed to use ReaderWriterLockSlim - see&lt;br&gt;
&amp;gt;&amp;gt; &amp;gt;&lt;br&gt;
&amp;gt;&amp;gt; &amp;gt; &lt;a href=&quot;http://www.bluebytesoftware.com/blog/PermaLink,guid,c4ea3d6d-190a-48f8-a677-44a438d8386b.aspx&quot; target=&quot;_blank&quot; rel=&quot;nofollow&quot;&gt;http://www.bluebytesoftware.com/blog/PermaLink,guid,c4ea3d6d-190a-48f8-a677-44a438d8386b.aspx&lt;/a&gt;&lt;br&gt;

&amp;gt;&amp;gt; &amp;gt;&lt;br&gt;
&amp;gt;&amp;gt; &amp;gt; File Changes:&lt;br&gt;
&amp;gt;&amp;gt; &amp;gt;&lt;br&gt;
&amp;gt;&amp;gt; &amp;gt; Directory: /trunk/InversionOfControl/Castle.MicroKernel/&lt;br&gt;
&amp;gt;&amp;gt; &amp;gt; ========================================================&lt;br&gt;
&amp;gt;&amp;gt; &amp;gt;&lt;br&gt;
&amp;gt;&amp;gt; &amp;gt; File [modified]: Castle.MicroKernel-vs2008.csproj&lt;br&gt;
&amp;gt;&amp;gt; &amp;gt; Delta lines: +83 -79&lt;br&gt;
&amp;gt;&amp;gt; &amp;gt; ===================================================================&lt;br&gt;
&amp;gt;&amp;gt; &amp;gt;&lt;br&gt;
&amp;gt;&amp;gt; &amp;gt; ---&lt;br&gt;
&amp;gt;&amp;gt; &amp;gt;&lt;br&gt;
&amp;gt;&amp;gt; &amp;gt; trunk/InversionOfControl/Castle.MicroKernel/Releasers/AllComponentsReleasePolicy.cs&lt;br&gt;
&amp;gt;&amp;gt; &amp;gt; 2008-10-10 23:14:31 UTC (rev 5375)&lt;br&gt;
&amp;gt;&amp;gt; &amp;gt; +++&lt;br&gt;
&amp;gt;&amp;gt; &amp;gt;&lt;br&gt;
&amp;gt;&amp;gt; &amp;gt; trunk/InversionOfControl/Castle.MicroKernel/Releasers/AllComponentsReleasePolicy.cs&lt;br&gt;
&amp;gt;&amp;gt; &amp;gt; 2008-10-12 05:04:37 UTC (rev 5376)&lt;br&gt;
&amp;gt;&amp;gt; &amp;gt; @@ -12,103 +12,107 @@&lt;br&gt;
&amp;gt;&amp;gt; &amp;gt; &amp;nbsp;// See the License for the specific language governing permissions and&lt;br&gt;
&amp;gt;&amp;gt; &amp;gt; &amp;nbsp;// limitations under the License.&lt;br&gt;
&amp;gt;&amp;gt; &amp;gt;&lt;br&gt;
&amp;gt;&amp;gt; &amp;gt; -using System.Threading;&lt;br&gt;
&amp;gt;&amp;gt; &amp;gt; -&lt;br&gt;
&amp;gt;&amp;gt; &amp;gt; &amp;nbsp;namespace Castle.MicroKernel.Releasers&lt;br&gt;
&amp;gt;&amp;gt; &amp;gt; &amp;nbsp;{&lt;br&gt;
&amp;gt;&amp;gt; &amp;gt; - &amp;nbsp; &amp;nbsp;using System;&lt;br&gt;
&amp;gt;&amp;gt; &amp;gt; - &amp;nbsp; &amp;nbsp;using System.Collections;&lt;br&gt;
&amp;gt;&amp;gt; &amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; using System;&lt;br&gt;
&amp;gt;&amp;gt; &amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; using System.Collections;&lt;br&gt;
&amp;gt;&amp;gt; &amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; using System.Threading;&lt;br&gt;
&amp;gt;&amp;gt; &amp;gt;&lt;br&gt;
&amp;gt;&amp;gt; &amp;gt; - &amp;nbsp; &amp;nbsp;[Serializable]&lt;br&gt;
&amp;gt;&amp;gt; &amp;gt; - &amp;nbsp; &amp;nbsp;public class AllComponentsReleasePolicy : IReleasePolicy&lt;br&gt;
&amp;gt;&amp;gt; &amp;gt; - &amp;nbsp; &amp;nbsp;{&lt;br&gt;
&amp;gt;&amp;gt; &amp;gt; - &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;private readonly IDictionary instance2Burden =&lt;br&gt;
&amp;gt;&amp;gt; &amp;gt; - &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;new Hashtable(new Util.ReferenceEqualityComparer());&lt;br&gt;
&amp;gt;&amp;gt; &amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; [Serializable]&lt;br&gt;
&amp;gt;&amp;gt; &amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; public class AllComponentsReleasePolicy : IReleasePolicy&lt;br&gt;
&amp;gt;&amp;gt; &amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; {&lt;br&gt;
&amp;gt;&amp;gt; &amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; private readonly IDictionary instance2Burden =&lt;br&gt;
&amp;gt;&amp;gt; &amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; new Hashtable(new&lt;br&gt;
&amp;gt;&amp;gt; &amp;gt; Util.ReferenceEqualityComparer());&lt;br&gt;
&amp;gt;&amp;gt; &amp;gt;&lt;br&gt;
&amp;gt;&amp;gt; &amp;gt; - &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;readonly ReaderWriterLock rwLock = new ReaderWriterLock();&lt;br&gt;
&amp;gt;&amp;gt; &amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; private readonly ReaderWriterLockSlim rwLock = new&lt;br&gt;
&amp;gt;&amp;gt; &amp;gt; ReaderWriterLockSlim(LockRecursionPolicy.SupportsRecursion);&lt;br&gt;
&amp;gt;&amp;gt; &amp;gt;&lt;br&gt;
&amp;gt;&amp;gt; &amp;gt; - &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;public virtual void Track(object instance, Burden burden)&lt;br&gt;
&amp;gt;&amp;gt; &amp;gt; - &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;{&lt;br&gt;
&amp;gt;&amp;gt; &amp;gt; - &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;rwLock.AcquireWriterLock(Timeout.Infinite);&lt;br&gt;
&amp;gt;&amp;gt; &amp;gt; - &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;try&lt;br&gt;
&amp;gt;&amp;gt; &amp;gt; - &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;{&lt;br&gt;
&amp;gt;&amp;gt; &amp;gt; - &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;instance2Burden[instance] = burden;&lt;br&gt;
&amp;gt;&amp;gt; &amp;gt; - &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}&lt;br&gt;
&amp;gt;&amp;gt; &amp;gt; - &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;finally&lt;br&gt;
&amp;gt;&amp;gt; &amp;gt; - &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;{&lt;br&gt;
&amp;gt;&amp;gt; &amp;gt; - &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;rwLock.ReleaseWriterLock();&lt;br&gt;
&amp;gt;&amp;gt; &amp;gt; - &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}&lt;br&gt;
&amp;gt;&amp;gt; &amp;gt; - &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}&lt;br&gt;
&amp;gt;&amp;gt; &amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; public virtual void Track(object instance, Burden&lt;br&gt;
&amp;gt;&amp;gt; &amp;gt; burden)&lt;br&gt;
&amp;gt;&amp;gt; &amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {&lt;br&gt;
&amp;gt;&amp;gt; &amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; rwLock.EnterWriteLock();&lt;br&gt;
&amp;gt;&amp;gt; &amp;gt;&lt;br&gt;
&amp;gt;&amp;gt; &amp;gt; - &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;public bool HasTrack(object instance)&lt;br&gt;
&amp;gt;&amp;gt; &amp;gt; - &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;{&lt;br&gt;
&amp;gt;&amp;gt; &amp;gt; - &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if (instance == null) throw new&lt;br&gt;
&amp;gt;&amp;gt; &amp;gt; ArgumentNullException(&amp;quot;instance&amp;quot;);&lt;br&gt;
&amp;gt;&amp;gt; &amp;gt; - &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;rwLock.AcquireReaderLock(Timeout.Infinite);&lt;br&gt;
&amp;gt;&amp;gt; &amp;gt; - &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;try&lt;br&gt;
&amp;gt;&amp;gt; &amp;gt; - &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;{&lt;br&gt;
&amp;gt;&amp;gt; &amp;gt; - &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;return instance2Burden.Contains(instance);&lt;br&gt;
&amp;gt;&amp;gt; &amp;gt; - &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}&lt;br&gt;
&amp;gt;&amp;gt; &amp;gt; - &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;finally&lt;br&gt;
&amp;gt;&amp;gt; &amp;gt; - &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;{&lt;br&gt;
&amp;gt;&amp;gt; &amp;gt; - &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;rwLock.ReleaseReaderLock();&lt;br&gt;
&amp;gt;&amp;gt; &amp;gt; - &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}&lt;br&gt;
&amp;gt;&amp;gt; &amp;gt; - &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}&lt;br&gt;
&amp;gt;&amp;gt; &amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; try&lt;br&gt;
&amp;gt;&amp;gt; &amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {&lt;br&gt;
&amp;gt;&amp;gt; &amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; instance2Burden[instance] = burden;&lt;br&gt;
&amp;gt;&amp;gt; &amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;br&gt;
&amp;gt;&amp;gt; &amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; finally&lt;br&gt;
&amp;gt;&amp;gt; &amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {&lt;br&gt;
&amp;gt;&amp;gt; &amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; rwLock.ExitWriteLock();&lt;br&gt;
&amp;gt;&amp;gt; &amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;br&gt;
&amp;gt;&amp;gt; &amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;br&gt;
&amp;gt;&amp;gt; &amp;gt;&lt;br&gt;
&amp;gt;&amp;gt; &amp;gt; - &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;public void Release(object instance)&lt;br&gt;
&amp;gt;&amp;gt; &amp;gt; - &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;{&lt;br&gt;
&amp;gt;&amp;gt; &amp;gt; - &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if (instance == null) throw new&lt;br&gt;
&amp;gt;&amp;gt; &amp;gt; ArgumentNullException(&amp;quot;instance&amp;quot;);&lt;br&gt;
&amp;gt;&amp;gt; &amp;gt; - &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;rwLock.AcquireReaderLock(Timeout.Infinite);&lt;br&gt;
&amp;gt;&amp;gt; &amp;gt; - &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;try&lt;br&gt;
&amp;gt;&amp;gt; &amp;gt; - &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;{&lt;br&gt;
&amp;gt;&amp;gt; &amp;gt; - &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;var burden = (Burden)instance2Burden[instance];&lt;br&gt;
&amp;gt;&amp;gt; &amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; public bool HasTrack(object instance)&lt;br&gt;
&amp;gt;&amp;gt; &amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {&lt;br&gt;
&amp;gt;&amp;gt; &amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if (instance == null) throw new&lt;br&gt;
&amp;gt;&amp;gt; &amp;gt; ArgumentNullException(&amp;quot;instance&amp;quot;);&lt;br&gt;
&amp;gt;&amp;gt; &amp;gt;&lt;br&gt;
&amp;gt;&amp;gt; &amp;gt; - &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if (burden == null)&lt;br&gt;
&amp;gt;&amp;gt; &amp;gt; - &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;return;&lt;br&gt;
&amp;gt;&amp;gt; &amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; rwLock.EnterReadLock();&lt;br&gt;
&amp;gt;&amp;gt; &amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; try&lt;br&gt;
&amp;gt;&amp;gt; &amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {&lt;br&gt;
&amp;gt;&amp;gt; &amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; return&lt;br&gt;
&amp;gt;&amp;gt; &amp;gt; instance2Burden.Contains(instance);&lt;br&gt;
&amp;gt;&amp;gt; &amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;br&gt;
&amp;gt;&amp;gt; &amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; finally&lt;br&gt;
&amp;gt;&amp;gt; &amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {&lt;br&gt;
&amp;gt;&amp;gt; &amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; rwLock.ExitReadLock();&lt;br&gt;
&amp;gt;&amp;gt; &amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;br&gt;
&amp;gt;&amp;gt; &amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;br&gt;
&amp;gt;&amp;gt; &amp;gt;&lt;br&gt;
&amp;gt;&amp;gt; &amp;gt; - &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;LockCookie cookie =&lt;br&gt;
&amp;gt;&amp;gt; &amp;gt; rwLock.UpgradeToWriterLock(Timeout.Infinite);&lt;br&gt;
&amp;gt;&amp;gt; &amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; public void Release(object instance)&lt;br&gt;
&amp;gt;&amp;gt; &amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {&lt;br&gt;
&amp;gt;&amp;gt; &amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if (instance == null) throw new&lt;br&gt;
&amp;gt;&amp;gt; &amp;gt; ArgumentNullException(&amp;quot;instance&amp;quot;);&lt;br&gt;
&amp;gt;&amp;gt; &amp;gt;&lt;br&gt;
&amp;gt;&amp;gt; &amp;gt; - &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;try&lt;br&gt;
&amp;gt;&amp;gt; &amp;gt; - &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;{&lt;br&gt;
&amp;gt;&amp;gt; &amp;gt; - &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;burden = (Burden)instance2Burden[instance];&lt;br&gt;
&amp;gt;&amp;gt; &amp;gt; - &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if (burden == null)&lt;br&gt;
&amp;gt;&amp;gt; &amp;gt; - &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;return;&lt;br&gt;
&amp;gt;&amp;gt; &amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; rwLock.EnterUpgradeableReadLock();&lt;br&gt;
&amp;gt;&amp;gt; &amp;gt;&lt;br&gt;
&amp;gt;&amp;gt; &amp;gt; - &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;instance2Burden.Remove(instance);&lt;br&gt;
&amp;gt;&amp;gt; &amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; try&lt;br&gt;
&amp;gt;&amp;gt; &amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {&lt;br&gt;
&amp;gt;&amp;gt; &amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; var burden = (Burden)&lt;br&gt;
&amp;gt;&amp;gt; &amp;gt; instance2Burden[instance];&lt;br&gt;
&amp;gt;&amp;gt; &amp;gt;&lt;br&gt;
&amp;gt;&amp;gt; &amp;gt; - &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;burden.Release(this);&lt;br&gt;
&amp;gt;&amp;gt; &amp;gt; - &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}&lt;br&gt;
&amp;gt;&amp;gt; &amp;gt; - &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;finally&lt;br&gt;
&amp;gt;&amp;gt; &amp;gt; - &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;{&lt;br&gt;
&amp;gt;&amp;gt; &amp;gt; - &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;rwLock.DowngradeFromWriterLock(ref cookie);&lt;br&gt;
&amp;gt;&amp;gt; &amp;gt; - &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}&lt;br&gt;
&amp;gt;&amp;gt; &amp;gt; - &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}&lt;br&gt;
&amp;gt;&amp;gt; &amp;gt; - &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;finally&lt;br&gt;
&amp;gt;&amp;gt; &amp;gt; - &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;{&lt;br&gt;
&amp;gt;&amp;gt; &amp;gt; - &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;rwLock.ReleaseReaderLock();&lt;br&gt;
&amp;gt;&amp;gt; &amp;gt; - &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}&lt;br&gt;
&amp;gt;&amp;gt; &amp;gt; - &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}&lt;br&gt;
&amp;gt;&amp;gt; &amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if (burden == null)&lt;br&gt;
&amp;gt;&amp;gt; &amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; return;&lt;br&gt;
&amp;gt;&amp;gt; &amp;gt;&lt;br&gt;
&amp;gt;&amp;gt; &amp;gt; - &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;public void Dispose()&lt;br&gt;
&amp;gt;&amp;gt; &amp;gt; - &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;{&lt;br&gt;
&amp;gt;&amp;gt; &amp;gt; - &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;rwLock.AcquireWriterLock(Timeout.Infinite);&lt;br&gt;
&amp;gt;&amp;gt; &amp;gt; - &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;try&lt;br&gt;
&amp;gt;&amp;gt; &amp;gt; - &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;{&lt;br&gt;
&amp;gt;&amp;gt; &amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; rwLock.EnterWriteLock();&lt;br&gt;
&amp;gt;&amp;gt; &amp;gt; +&lt;br&gt;
&amp;gt;&amp;gt; &amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; try&lt;br&gt;
&amp;gt;&amp;gt; &amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {&lt;br&gt;
&amp;gt;&amp;gt; &amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; burden = (Burden)&lt;br&gt;
&amp;gt;&amp;gt; &amp;gt; instance2Burden[instance];&lt;br&gt;
&amp;gt;&amp;gt; &amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if (burden == null)&lt;br&gt;
&amp;gt;&amp;gt; &amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; return;&lt;br&gt;
&amp;gt;&amp;gt; &amp;gt; +&lt;br&gt;
&amp;gt;&amp;gt; &amp;gt; +&lt;br&gt;
&amp;gt;&amp;gt; &amp;gt; instance2Burden.Remove(instance);&lt;br&gt;
&amp;gt;&amp;gt; &amp;gt; +&lt;br&gt;
&amp;gt;&amp;gt; &amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; burden.Release(this);&lt;br&gt;
&amp;gt;&amp;gt; &amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;br&gt;
&amp;gt;&amp;gt; &amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; finally&lt;br&gt;
&amp;gt;&amp;gt; &amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {&lt;br&gt;
&amp;gt;&amp;gt; &amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; rwLock.ExitWriteLock();&lt;br&gt;
&amp;gt;&amp;gt; &amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;br&gt;
&amp;gt;&amp;gt; &amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;br&gt;
&amp;gt;&amp;gt; &amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; finally&lt;br&gt;
&amp;gt;&amp;gt; &amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {&lt;br&gt;
&amp;gt;&amp;gt; &amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; rwLock.ExitUpgradeableReadLock();&lt;br&gt;
&amp;gt;&amp;gt; &amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;br&gt;
&amp;gt;&amp;gt; &amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;br&gt;
&amp;gt;&amp;gt; &amp;gt; +&lt;br&gt;
&amp;gt;&amp;gt; &amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; public void Dispose()&lt;br&gt;
&amp;gt;&amp;gt; &amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {&lt;br&gt;
&amp;gt;&amp;gt; &amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; rwLock.EnterWriteLock();&lt;br&gt;
&amp;gt;&amp;gt; &amp;gt; +&lt;br&gt;
&amp;gt;&amp;gt; &amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; try&lt;br&gt;
&amp;gt;&amp;gt; &amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {&lt;br&gt;
&amp;gt;&amp;gt; &amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Burden[] burdens = new&lt;br&gt;
&amp;gt;&amp;gt; &amp;gt; Burden[instance2Burden.Count];&lt;br&gt;
&amp;gt;&amp;gt; &amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;instance2Burden.Values.CopyTo(burdens,&lt;br&gt;
&amp;gt;&amp;gt; &amp;gt; 0);&lt;br&gt;
&amp;gt;&amp;gt; &amp;gt;&lt;br&gt;
&amp;gt;&amp;gt; &amp;gt; - &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;foreach (Burden burden in burdens)&lt;br&gt;
&amp;gt;&amp;gt; &amp;gt; - &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;{&lt;br&gt;
&amp;gt;&amp;gt; &amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; foreach(Burden burden in burdens)&lt;br&gt;
&amp;gt;&amp;gt; &amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {&lt;br&gt;
&amp;gt;&amp;gt; &amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if&lt;br&gt;
&amp;gt;&amp;gt; &amp;gt; (instance2Burden.Contains(burden))&lt;br&gt;
&amp;gt;&amp;gt; &amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;{&lt;br&gt;
&amp;gt;&amp;gt; &amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;burden.Release(this);&lt;br&gt;
&amp;gt;&amp;gt; &amp;gt;&lt;br&gt;
&amp;gt;&amp;gt; &amp;gt; &amp;nbsp;instance2Burden.Remove(burden);&lt;br&gt;
&amp;gt;&amp;gt; &amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}&lt;br&gt;
&amp;gt;&amp;gt; &amp;gt; - &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}&lt;br&gt;
&amp;gt;&amp;gt; &amp;gt; - &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}&lt;br&gt;
&amp;gt;&amp;gt; &amp;gt; - &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;finally&lt;br&gt;
&amp;gt;&amp;gt; &amp;gt; - &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;{&lt;br&gt;
&amp;gt;&amp;gt; &amp;gt; - &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;rwLock.ReleaseWriterLock();&lt;br&gt;
&amp;gt;&amp;gt; &amp;gt; - &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}&lt;br&gt;
&amp;gt;&amp;gt; &amp;gt; - &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}&lt;br&gt;
&amp;gt;&amp;gt; &amp;gt; - &amp;nbsp; &amp;nbsp;}&lt;br&gt;
&amp;gt;&amp;gt; &amp;gt; -}&lt;br&gt;
&amp;gt;&amp;gt; &amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;br&gt;
&amp;gt;&amp;gt; &amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;br&gt;
&amp;gt;&amp;gt; &amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; finally&lt;br&gt;
&amp;gt;&amp;gt; &amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {&lt;br&gt;
&amp;gt;&amp;gt; &amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; rwLock.ExitWriteLock();&lt;br&gt;
&amp;gt;&amp;gt; &amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;br&gt;
&amp;gt;&amp;gt; &amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;br&gt;
&amp;gt;&amp;gt; &amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;br&gt;
&amp;gt;&amp;gt; &amp;gt; +}&lt;br&gt;
&amp;gt;&amp;gt; &amp;gt;&lt;br&gt;
&amp;gt;&amp;gt; &amp;gt; Directory: /trunk/InversionOfControl/Castle.MicroKernel/Releasers/&lt;br&gt;
&amp;gt;&amp;gt; &amp;gt; ==================================================================&lt;br&gt;
&amp;gt;&amp;gt; &amp;gt;&lt;br&gt;
&amp;gt;&amp;gt; &amp;gt; File [modified]: AllComponentsReleasePolicy.cs&lt;br&gt;
&amp;gt;&amp;gt; &amp;gt; Delta lines: +0 -0&lt;br&gt;
&amp;gt;&amp;gt; &amp;gt; ===================================================================&lt;br&gt;
&amp;gt;&amp;gt; &amp;gt;&lt;br&gt;
&amp;gt;&amp;gt; &amp;gt;&lt;br&gt;
&amp;gt;&amp;gt; &amp;gt;&lt;br&gt;
&amp;gt;&amp;gt; &amp;gt;&lt;br&gt;
&amp;gt;&amp;gt; &amp;gt;&lt;br&gt;
&amp;gt;&amp;gt; &amp;gt; &amp;gt;&lt;br&gt;
&amp;gt;&amp;gt; &amp;gt;&lt;br&gt;
&amp;gt;&amp;gt;&lt;br&gt;
&amp;gt;&amp;gt;&lt;br&gt;
&amp;gt;&amp;gt;&lt;br&gt;
&amp;gt;&amp;gt; --&lt;br&gt;
&amp;gt;&amp;gt; Cheers,&lt;br&gt;
&amp;gt;&amp;gt; hammett&lt;br&gt;
&amp;gt;&amp;gt; &lt;a href=&quot;http://hammett.castleproject.org/&quot; target=&quot;_blank&quot; rel=&quot;nofollow&quot;&gt;http://hammett.castleproject.org/&lt;/a&gt;&lt;br&gt;
&amp;gt;&amp;gt;&lt;br&gt;
&amp;gt;&amp;gt;&lt;br&gt;
&amp;gt;&lt;br&gt;
&amp;gt;&lt;br&gt;
&amp;gt;&lt;br&gt;
&amp;gt; --&lt;br&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;Ih2E3d&quot;&gt;&amp;gt; Ken Egozi.&lt;br&gt;
&amp;gt; &lt;a href=&quot;http://www.kenegozi.com/blog&quot; target=&quot;_blank&quot; rel=&quot;nofollow&quot;&gt;http://www.kenegozi.com/blog&lt;/a&gt;&lt;br&gt;
&amp;gt; &lt;a href=&quot;http://www.musicglue.com&quot; target=&quot;_blank&quot; rel=&quot;nofollow&quot;&gt;http://www.musicglue.com&lt;/a&gt;&lt;br&gt;
&amp;gt; &lt;a href=&quot;http://www.castleproject.org&quot; target=&quot;_blank&quot; rel=&quot;nofollow&quot;&gt;http://www.castleproject.org&lt;/a&gt;&lt;br&gt;
&amp;gt; &lt;a href=&quot;http://www.gotfriends.co.il&quot; target=&quot;_blank&quot; rel=&quot;nofollow&quot;&gt;http://www.gotfriends.co.il&lt;/a&gt;&lt;br&gt;
&amp;gt;&lt;br&gt;
&amp;gt; &amp;gt;&lt;br&gt;
&amp;gt;&lt;br&gt;
&lt;br&gt;
&lt;br&gt;
&lt;br&gt;
&lt;/div&gt;--&lt;br&gt;
&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div class=&quot;Wj3C7c&quot;&gt;Cheers,&lt;br&gt;
hammett&lt;br&gt;
&lt;a href=&quot;http://hammett.castleproject.org/&quot; target=&quot;_blank&quot; rel=&quot;nofollow&quot;&gt;http://hammett.castleproject.org/&lt;/a&gt;&lt;br&gt;
&lt;br&gt;
&lt;br&gt;
&lt;/div&gt;&lt;/div&gt;&lt;/blockquote&gt;&lt;/div&gt;&lt;br&gt;&lt;br clear=&quot;all&quot;&gt;&lt;br&gt;-- &lt;br&gt;Ken Egozi.&lt;br&gt;&lt;a href=&quot;http://www.kenegozi.com/blog&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://www.kenegozi.com/blog&lt;/a&gt;&lt;br&gt;&lt;a href=&quot;http://www.musicglue.com&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://www.musicglue.com&lt;/a&gt;&lt;br&gt;&lt;a href=&quot;http://www.castleproject.org&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://www.castleproject.org&lt;/a&gt;&lt;br&gt;
&lt;a href=&quot;http://www.gotfriends.co.il&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://www.gotfriends.co.il&lt;/a&gt;&lt;br&gt;
&lt;/div&gt;&lt;br&gt;
--~--~---------~--~----~------------~-------~--~----~&lt;br&gt;
You received this message because you are subscribed to the Google Groups &amp;quot;Castle Project Development List&amp;quot; group. &lt;br&gt; To post to this group, send email to &lt;a href=&quot;http://www.nabble.com/user/SendEmail.jtp?type=post&amp;post=19943440&amp;i=6&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;castle-project-devel@...&lt;/a&gt; &lt;br&gt; To unsubscribe from this group, send email to &lt;a href=&quot;http://www.nabble.com/user/SendEmail.jtp?type=post&amp;post=19943440&amp;i=7&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;castle-project-devel+unsubscribe@...&lt;/a&gt; &lt;br&gt; For more options, visit this group at http://groups.google.com/group/castle-project-devel?hl=en &lt;br&gt; -~----------~----~----~----~------~----~------~--~---&lt;br&gt;
&lt;br&gt;
&lt;p&gt;From forum: &lt;a href=&quot;http://www.nabble.com/Castle-Dev-f15384.html&quot; embed=&quot;fixTarget[15384]&quot; target=&quot;_top&quot; &gt;Castle Dev&lt;/a&gt;&lt;/p&gt;</content>
	<link rel="alternate" type="text/html" href="http://www.nabble.com/Fwd%3A--hammett-commit%3A-5376-%3A--trunk-InversionOfControl-Castle.MicroKernel--tp19941211p19943440.html" />
</entry>

<entry>
	<id>tag:www.nabble.com,2006:post-19943382</id>
	<title>Re: [hammett commit: 5376]: /trunk/InversionOfControl/Castle.MicroKernel/</title>
	<published>2008-10-12T09:48:52Z</published>
	<updated>2008-10-12T09:48:52Z</updated>
	<author>
		<name>hammett-2</name>
	</author>
	<content type="html">&lt;br&gt;Was it? This kinda sucks as our &amp;quot;competitors&amp;quot; can take dependency on
&lt;br&gt;3.5, and there's 4.0 under the way.
&lt;br&gt;Having compatibility with older frameworks takes much of the fun of
&lt;br&gt;OSS as a place for experimentations.
&lt;br&gt;&lt;br&gt;On Sun, Oct 12, 2008 at 9:38 AM, Ken Egozi &amp;lt;&lt;a href=&quot;http://www.nabble.com/user/SendEmail.jtp?type=post&amp;post=19943382&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;egozi13@...&lt;/a&gt;&amp;gt; wrote:
&lt;div class='shrinkable-quote'&gt;&lt;br&gt;&amp;gt; wasn't the vote on
&lt;br&gt;&amp;gt; 1. getting rid of 2005 projects
&lt;br&gt;&amp;gt; and
&lt;br&gt;&amp;gt; 2. allowing c#3 language features that can compile to 2.0 (like var and
&lt;br&gt;&amp;gt; initialisers), but *not* System.Core/System.Linq etc
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; On Sun, Oct 12, 2008 at 6:35 PM, hammett &amp;lt;&lt;a href=&quot;http://www.nabble.com/user/SendEmail.jtp?type=post&amp;post=19943382&amp;i=1&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;hammett@...&lt;/a&gt;&amp;gt; wrote:
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; I thought we have held a vote on that recently...
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; On Sun, Oct 12, 2008 at 5:25 AM, Ayende Rahien &amp;lt;&lt;a href=&quot;http://www.nabble.com/user/SendEmail.jtp?type=post&amp;post=19943382&amp;i=2&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;ayende@...&lt;/a&gt;&amp;gt; wrote:
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt; This ties the castle code base to .NET 3.5, was this intentional?
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt; ---------- Forwarded message ----------
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt; From: &amp;lt;&lt;a href=&quot;http://www.nabble.com/user/SendEmail.jtp?type=post&amp;post=19943382&amp;i=3&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;notification@...&lt;/a&gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt; Date: Sun, Oct 12, 2008 at 7:04 AM
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt; Subject: [hammett commit: 5376]:
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt; /trunk/InversionOfControl/Castle.MicroKernel/
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt; To: &lt;a href=&quot;http://www.nabble.com/user/SendEmail.jtp?type=post&amp;post=19943382&amp;i=4&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;castle-project-commits@...&lt;/a&gt;
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt; User: hammett
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt; Date: 2008/10/11 10:04 PM
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt; Modified:
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt; &amp;nbsp;/trunk/InversionOfControl/Castle.MicroKernel/
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt; &amp;nbsp;Castle.MicroKernel-vs2008.csproj
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt; &amp;nbsp;/trunk/InversionOfControl/Castle.MicroKernel/Releasers/
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt; &amp;nbsp;AllComponentsReleasePolicy.cs
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt; Log:
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt; &amp;nbsp;Changed to use ReaderWriterLockSlim - see
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt; &lt;a href=&quot;http://www.bluebytesoftware.com/blog/PermaLink,guid,c4ea3d6d-190a-48f8-a677-44a438d8386b.aspx&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://www.bluebytesoftware.com/blog/PermaLink,guid,c4ea3d6d-190a-48f8-a677-44a438d8386b.aspx&lt;/a&gt;&lt;br&gt;&amp;gt;&amp;gt; &amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt; File Changes:
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt; Directory: /trunk/InversionOfControl/Castle.MicroKernel/
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt; ========================================================
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt; File [modified]: Castle.MicroKernel-vs2008.csproj
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt; Delta lines: +83 -79
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt; ===================================================================
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt; ---
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt; trunk/InversionOfControl/Castle.MicroKernel/Releasers/AllComponentsReleasePolicy.cs
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt; 2008-10-10 23:14:31 UTC (rev 5375)
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt; +++
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt; trunk/InversionOfControl/Castle.MicroKernel/Releasers/AllComponentsReleasePolicy.cs
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt; 2008-10-12 05:04:37 UTC (rev 5376)
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt; @@ -12,103 +12,107 @@
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt; &amp;nbsp;// See the License for the specific language governing permissions and
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt; &amp;nbsp;// limitations under the License.
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt; -using System.Threading;
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt; -
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt; &amp;nbsp;namespace Castle.MicroKernel.Releasers
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt; &amp;nbsp;{
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt; - &amp;nbsp; &amp;nbsp;using System;
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt; - &amp;nbsp; &amp;nbsp;using System.Collections;
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; using System;
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; using System.Collections;
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; using System.Threading;
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt; - &amp;nbsp; &amp;nbsp;[Serializable]
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt; - &amp;nbsp; &amp;nbsp;public class AllComponentsReleasePolicy : IReleasePolicy
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt; - &amp;nbsp; &amp;nbsp;{
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt; - &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;private readonly IDictionary instance2Burden =
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt; - &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;new Hashtable(new Util.ReferenceEqualityComparer());
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; [Serializable]
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; public class AllComponentsReleasePolicy : IReleasePolicy
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; {
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; private readonly IDictionary instance2Burden =
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; new Hashtable(new
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt; Util.ReferenceEqualityComparer());
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt; - &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;readonly ReaderWriterLock rwLock = new ReaderWriterLock();
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; private readonly ReaderWriterLockSlim rwLock = new
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt; ReaderWriterLockSlim(LockRecursionPolicy.SupportsRecursion);
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt; - &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;public virtual void Track(object instance, Burden burden)
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt; - &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;{
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt; - &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;rwLock.AcquireWriterLock(Timeout.Infinite);
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt; - &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;try
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt; - &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;{
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt; - &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;instance2Burden[instance] = burden;
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt; - &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt; - &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;finally
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt; - &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;{
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt; - &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;rwLock.ReleaseWriterLock();
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt; - &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt; - &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; public virtual void Track(object instance, Burden
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt; burden)
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; rwLock.EnterWriteLock();
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt; - &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;public bool HasTrack(object instance)
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt; - &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;{
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt; - &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if (instance == null) throw new
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt; ArgumentNullException(&amp;quot;instance&amp;quot;);
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt; - &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;rwLock.AcquireReaderLock(Timeout.Infinite);
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt; - &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;try
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt; - &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;{
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt; - &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;return instance2Burden.Contains(instance);
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt; - &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt; - &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;finally
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt; - &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;{
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt; - &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;rwLock.ReleaseReaderLock();
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt; - &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt; - &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; try
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; instance2Burden[instance] = burden;
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; finally
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; rwLock.ExitWriteLock();
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt; - &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;public void Release(object instance)
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt; - &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;{
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt; - &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if (instance == null) throw new
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt; ArgumentNullException(&amp;quot;instance&amp;quot;);
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt; - &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;rwLock.AcquireReaderLock(Timeout.Infinite);
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt; - &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;try
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt; - &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;{
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt; - &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;var burden = (Burden)instance2Burden[instance];
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; public bool HasTrack(object instance)
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if (instance == null) throw new
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt; ArgumentNullException(&amp;quot;instance&amp;quot;);
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt; - &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if (burden == null)
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt; - &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;return;
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; rwLock.EnterReadLock();
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; try
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; return
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt; instance2Burden.Contains(instance);
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; finally
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; rwLock.ExitReadLock();
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt; - &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;LockCookie cookie =
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt; rwLock.UpgradeToWriterLock(Timeout.Infinite);
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; public void Release(object instance)
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if (instance == null) throw new
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt; ArgumentNullException(&amp;quot;instance&amp;quot;);
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt; - &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;try
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt; - &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;{
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt; - &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;burden = (Burden)instance2Burden[instance];
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt; - &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if (burden == null)
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt; - &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;return;
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; rwLock.EnterUpgradeableReadLock();
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt; - &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;instance2Burden.Remove(instance);
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; try
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; var burden = (Burden)
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt; instance2Burden[instance];
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt; - &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;burden.Release(this);
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt; - &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt; - &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;finally
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt; - &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;{
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt; - &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;rwLock.DowngradeFromWriterLock(ref cookie);
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt; - &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt; - &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt; - &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;finally
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt; - &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;{
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt; - &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;rwLock.ReleaseReaderLock();
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt; - &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt; - &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if (burden == null)
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; return;
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt; - &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;public void Dispose()
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt; - &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;{
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt; - &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;rwLock.AcquireWriterLock(Timeout.Infinite);
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt; - &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;try
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt; - &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;{
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; rwLock.EnterWriteLock();
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt; +
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; try
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; burden = (Burden)
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt; instance2Burden[instance];
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if (burden == null)
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; return;
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt; +
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt; +
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt; instance2Burden.Remove(instance);
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt; +
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; burden.Release(this);
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; finally
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; rwLock.ExitWriteLock();
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; finally
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; rwLock.ExitUpgradeableReadLock();
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt; +
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; public void Dispose()
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; rwLock.EnterWriteLock();
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt; +
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; try
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Burden[] burdens = new
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt; Burden[instance2Burden.Count];
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;instance2Burden.Values.CopyTo(burdens,
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt; 0);
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt; - &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;foreach (Burden burden in burdens)
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt; - &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;{
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; foreach(Burden burden in burdens)
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt; (instance2Burden.Contains(burden))
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;{
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;burden.Release(this);
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt; &amp;nbsp;instance2Burden.Remove(burden);
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt; - &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt; - &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt; - &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;finally
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt; - &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;{
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt; - &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;rwLock.ReleaseWriterLock();
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt; - &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt; - &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt; - &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt; -}
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; finally
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; rwLock.ExitWriteLock();
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; }
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt; +}
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt; Directory: /trunk/InversionOfControl/Castle.MicroKernel/Releasers/
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt; ==================================================================
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt; File [modified]: AllComponentsReleasePolicy.cs
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt; Delta lines: +0 -0
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt; ===================================================================
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt; &amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; --
&lt;br&gt;&amp;gt;&amp;gt; Cheers,
&lt;br&gt;&amp;gt;&amp;gt; hammett
&lt;br&gt;&amp;gt;&amp;gt; &lt;a href=&quot;http://hammett.castleproject.org/&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://hammett.castleproject.org/&lt;/a&gt;&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; --
&lt;br&gt;&amp;gt; Ken Egozi.
&lt;br&gt;&amp;gt; &lt;a href=&quot;http://www.kenegozi.com/blog&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://www.kenegozi.com/blog&lt;/a&gt;&lt;br&gt;&amp;gt; &lt;a href=&quot;http://www.musicglue.com&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://www.musicglue.com&lt;/a&gt;&lt;br&gt;&amp;gt; &lt;a href=&quot;http://www.castleproject.org&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://www.castleproject.org&lt;/a&gt;&lt;br&gt;&amp;gt; &lt;a href=&quot;http://www.gotfriends.co.il&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://www.gotfriends.co.il&lt;/a&gt;&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; &amp;gt;
&lt;br&gt;&amp;gt;
&lt;/div&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;-- 
&lt;br&gt;Cheers,
&lt;br&gt;hammett
&lt;br&gt;&lt;a href=&quot;http://hammett.castleproject.org/&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://hammett.castleproject.org/&lt;/a&gt;&lt;br&gt;&lt;br&gt;--~--~---------~--~----~------------~-------~--~----~
&lt;br&gt;You received this message because you are subscribed to the Google Groups &amp;quot;Castle Project Development List&amp;quot; group.
&lt;br&gt;To post to this group, send email to &lt;a href=&quot;http://www.nabble.com/user/SendEmail.jtp?type=post&amp;post=19943382&amp;i=5&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;castle-project-devel@...&lt;/a&gt;
&lt;br&gt;To unsubscribe from this group, send email to &lt;a href=&quot;http://www.nabble.com/user/SendEmail.jtp?type=post&amp;post=19943382&amp;i=6&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;castle-project-devel+unsubscribe@...&lt;/a&gt;
&lt;br&gt;For more options, visit this group at &lt;a href=&quot;http://groups.google.com/group/castle-project-devel?hl=en&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://groups.google.com/group/castle-project-devel?hl=en&lt;/a&gt;&lt;br&gt;-~----------~----~----~----~------~----~------~--~---
&lt;br&gt;&lt;br&gt;&lt;p&gt;From forum: &lt;a href=&quot;http://www.nabble.com/Castle-Dev-f15384.html&quot; embed=&quot;fixTarget[15384]&quot; target=&quot;_top&quot; &gt;Castle Dev&lt;/a&gt;&lt;/p&gt;</content>
	<link rel="alternate" type="text/html" href="http://www.nabble.com/Fwd%3A--hammett-commit%3A-5376-%3A--trunk-InversionOfControl-Castle.MicroKernel--tp19941211p19943382.html" />
</entry>

<entry>
	<id>tag:www.nabble.com,2006:post-19943316</id>
	<title>Re: [hammett commit: 5376]: /trunk/InversionOfControl/Castle.MicroKernel/</title>
	<published>2008-10-12T09:38:31Z</published>
	<updated>2008-10-12T09:38:31Z</updated>
	<author>
		<name>Ken Egozi</name>
	</author>
	<content type="html">&lt;div dir=&quot;ltr&quot;&gt;wasn&amp;#39;t the vote on &lt;br&gt;1. getting rid of 2005 projects&lt;br&gt;and&lt;br&gt;2. allowing c#3 language features that can compile to 2.0 (like var and initialisers), but *not* System.Core/System.Linq etc&lt;br&gt;&lt;br&gt;&lt;div class=&quot;gmail_quote&quot;&gt;
On Sun, Oct 12, 2008 at 6:35 PM, hammett &lt;span dir=&quot;ltr&quot;&gt;&amp;lt;&lt;a href=&quot;http://www.nabble.com/user/SendEmail.jtp?type=post&amp;post=19943316&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;hammett@...&lt;/a&gt;&amp;gt;&lt;/span&gt; wrote:&lt;br&gt;&lt;blockquote class=&quot;gmail_quote&quot; style=&quot;border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;&quot;&gt;
&lt;br&gt;
I thought we have held a vote on that recently...&lt;br&gt;
&lt;br&gt;
On Sun, Oct 12, 2008 at 5:25 AM, Ayende Rahien &amp;lt;&lt;a href=&quot;http://www.nabble.com/user/SendEmail.jtp?type=post&amp;post=19943316&amp;i=1&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;ayende@...&lt;/a&gt;&amp;gt; wrote:&lt;br&gt;
&amp;gt; This ties the castle code base to .NET 3.5, was this intentional?&lt;br&gt;
&amp;gt;&lt;br&gt;
&amp;gt; ---------- Forwarded message ----------&lt;br&gt;
&amp;gt; From: &amp;lt;&lt;a href=&quot;http://www.nabble.com/user/SendEmail.jtp?type=post&amp;post=19943316&amp;i=2&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;notification@...&lt;/a&gt;&amp;gt;&lt;br&gt;
&amp;gt; Date: Sun, Oct 12, 2008 at 7:04 AM&lt;br&gt;
&amp;gt; Subject: [hammett commit: 5376]:&lt;br&gt;
&amp;gt; /trunk/InversionOfControl/Castle.MicroKernel/&lt;br&gt;
&amp;gt; To: &lt;a href=&quot;http://www.nabble.com/user/SendEmail.jtp?type=post&amp;post=19943316&amp;i=3&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;castle-project-commits@...&lt;/a&gt;&lt;br&gt;
&amp;gt;&lt;br&gt;
&amp;gt;&lt;br&gt;
&amp;gt;&lt;br&gt;
&amp;gt; User: hammett&lt;br&gt;
&amp;gt; Date: 2008/10/11 10:04 PM&lt;br&gt;
&amp;gt;&lt;br&gt;
&amp;gt; Modified:&lt;br&gt;
&amp;gt; &amp;nbsp;/trunk/InversionOfControl/Castle.MicroKernel/&lt;br&gt;
&amp;gt; &amp;nbsp;Castle.MicroKernel-vs2008.csproj&lt;br&gt;
&amp;gt; &amp;nbsp;/trunk/InversionOfControl/Castle.MicroKernel/Releasers/&lt;br&gt;
&amp;gt; &amp;nbsp;AllComponentsReleasePolicy.cs&lt;br&gt;
&amp;gt;&lt;br&gt;
&amp;gt; Log:&lt;br&gt;
&amp;gt; &amp;nbsp;Changed to use ReaderWriterLockSlim - see&lt;br&gt;
&amp;gt; &lt;a href=&quot;http://www.bluebytesoftware.com/blog/PermaLink,guid,c4ea3d6d-190a-48f8-a677-44a438d8386b.aspx&quot; target=&quot;_blank&quot; rel=&quot;nofollow&quot;&gt;http://www.bluebytesoftware.com/blog/PermaLink,guid,c4ea3d6d-190a-48f8-a677-44a438d8386b.aspx&lt;/a&gt;&lt;br&gt;

&amp;gt;&lt;br&gt;
&amp;gt; File Changes:&lt;br&gt;
&amp;gt;&lt;br&gt;
&amp;gt; Directory: /trunk/InversionOfControl/Castle.MicroKernel/&lt;br&gt;
&amp;gt; ========================================================&lt;br&gt;
&amp;gt;&lt;br&gt;
&amp;gt; File [modified]: Castle.MicroKernel-vs2008.csproj&lt;br&gt;
&amp;gt; Delta lines: +83 -79&lt;br&gt;
&amp;gt; ===================================================================&lt;br&gt;
&amp;gt;&lt;br&gt;
&amp;gt; ---&lt;br&gt;
&amp;gt; trunk/InversionOfControl/Castle.MicroKernel/Releasers/AllComponentsReleasePolicy.cs&lt;br&gt;
&amp;gt; 2008-10-10 23:14:31 UTC (rev 5375)&lt;br&gt;
&amp;gt; +++&lt;br&gt;
&amp;gt; trunk/InversionOfControl/Castle.MicroKernel/Releasers/AllComponentsReleasePolicy.cs&lt;br&gt;
&amp;gt; 2008-10-12 05:04:37 UTC (rev 5376)&lt;br&gt;
&amp;gt; @@ -12,103 +12,107 @@&lt;br&gt;
&amp;gt; &amp;nbsp;// See the License for the specific language governing permissions and&lt;br&gt;
&amp;gt; &amp;nbsp;// limitations under the License.&lt;br&gt;
&amp;gt;&lt;br&gt;
&amp;gt; -using System.Threading;&lt;br&gt;
&amp;gt; -&lt;br&gt;
&amp;gt; &amp;nbsp;namespace Castle.MicroKernel.Releasers&lt;br&gt;
&amp;gt; &amp;nbsp;{&lt;br&gt;
&amp;gt; - &amp;nbsp; &amp;nbsp;using System;&lt;br&gt;
&amp;gt; - &amp;nbsp; &amp;nbsp;using System.Collections;&lt;br&gt;
&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; using System;&lt;br&gt;
&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; using System.Collections;&lt;br&gt;
&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; using System.Threading;&lt;br&gt;
&amp;gt;&lt;br&gt;
&amp;gt; - &amp;nbsp; &amp;nbsp;[Serializable]&lt;br&gt;
&amp;gt; - &amp;nbsp; &amp;nbsp;public class AllComponentsReleasePolicy : IReleasePolicy&lt;br&gt;
&amp;gt; - &amp;nbsp; &amp;nbsp;{&lt;br&gt;
&amp;gt; - &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;private readonly IDictionary instance2Burden =&lt;br&gt;
&amp;gt; - &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;new Hashtable(new Util.ReferenceEqualityComparer());&lt;br&gt;
&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; [Serializable]&lt;br&gt;
&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; public class AllComponentsReleasePolicy : IReleasePolicy&lt;br&gt;
&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; {&lt;br&gt;
&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; private readonly IDictionary instance2Burden =&lt;br&gt;
&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &