Can running object be garbage collected?
<p>I have a simple class:</p>

<pre><code>public class Runner
{
    public void RunAndForget(RunDelegate method)
    {
        ThreadPool.QueueUserWorkItem(new WaitCallback(Run), method);
    }

    private void Run(object o)
    {
        ((RunDelegate )o).Invoke();
    }
}
</code></pre>

<p>And if I use this like so:</p>

<pre><code>private void RunSomethingASync()
{
    Runner runner = new Runner();
    runner.FireAndForget(new RunDelegate(Something));
}
</code></pre>

<p>Is there any danger using it like this? My C++ guts tell me that runner object should be destroyed after RunSomethingASync is finished. Am I right? What happens then to the method running on different thread?</p>

<p>Or perhaps it is other way around and runner will not be collected? That would be a problem considering I may call RunSomethingASync() many times.</p>
