title: Deleting child object from parent when something happens in child's internal thread
body: <p>Let's say I have <code>ObjectA</code> (of <code>classA</code>), which contains:</p>
  
  <pre><code>List&lt;classB&gt; bList;
  </code></pre>
  
  <p>now let's suppose that in each <code>objectB</code> there are a couple of threads which are running (they can't be accessed from outside <code>objectB</code>), <code>threadB1</code> and <code>threadB2</code>.</p>
  
  <p>Now, in a certain <code>objectB</code> of such list, <code>threadB2</code> discovers that <code>objectBRemove==true</code>. </p>
  
  <p>When that happens, I want to terminate all threads from such object and remove it from <code>bList</code> (I effectively want to destroy this <code>objectB</code>). </p>
  
  <p>I thought I could rise an event inside <code>objectB</code> and subscribe a <code>objectA</code>'s method to such event:</p>
  
  <pre><code>public void onObjectBRemove(object sender, EventArgs e)
  {
      bList.Remove((classB) sender);
  }
  </code></pre>
  
  <p>When this is called after <code>objectB</code>'s event rising this should remove <code>objectB</code> from the list. Then, the garbage collector should notice <code>objectB</code> becoming unreferenced and thus deleting it, also terminating all internal threads.</p>
  
  <p>Is this supposed to work? Is this a reasonable approach to the problem at hand?</p>