When are thread local variables freed in C#
<p>In the following code:</p>

<pre><code>public void f() 
{
    List l1&lt;int&gt; = new List&lt;int&gt;();
    List l2&lt;int&gt; = new List&lt;int&gt;();
    //.. populate l1 and l2
    ThreadPool.QueueUserWorkItem(new WaitCallback(delegate(object state)
    {
       // use l1 and l2
       // force gc.collect l1 and l2?
    }));
    //..
}
</code></pre>

<p>l1 and l2 are Thread local very large lists. When do they become eligible for garbage collection? When the thread is done executing the block, do they become eligible?</p>

<p>Is it a good idea to force garbage collection of l1 and l2 when the thread is done with them?</p>

<p>thanks</p>
