C#::テンペストスレッド!!!太め!多め!!

スレッドって投げっぱなしでいいのかしら?
たとえば、時間のかかる処理があって、それが終わったら結果をどこかに格納して次のUIを表示するとしよう。まぁよくあるパターンだと思う。
その時、GUIが硬直するのはよろしくないので処理をスレッドに任せることにする。
つまり、こうだ。

public partial class Form1 : Form{
 int result;
 void LongTimeSpendProcInvoker(){
   Thread th = new Thread(
     () =>
     {
       //とてつもなく時間のかかる処理を行い
       result = LongTimeSpendProc();
    //終わったら次のUIを表示する
       this.Invoke((Action)(() => NextUIShow()));
     });
   th.Start();
 }

 int LongTimeSpendProc(){
   Thread.Sleep(5000); 
   return 5;
 }
 void NextUIShow(){
    var w = new Form2();
    w.Show();
 }
}

これでLongTimeSpendProcInvokerを呼び出すと、何か処理してそれが終わったら次のフォームが表示されるわけだけども。
ここで疑問が。
次のUIが表示された後、スレッド(th)はいったいどういう状態になっているんでしょう?完了状態でずっと残っているのか?参照thがもはや存在しないから終了した時点でガベコレ行きなのか?スレッド終了時(this.Invokeの直後)にThread.CurrentThread.Abort();でも呼べばいいのか?そもそもこんな使い方して大丈夫なのか?大事にthを保護して処理完了時にイベントを投げさせてそこでjoinするとかしなくてもいいのか?
正直さっぱりわからないぜ。ExpressEditionでは既存のスレッド一覧は出ないしなぁ。VC++にはExpressEditionでもスレッドウィンドウあるのに、なんでC#にはついてないんでしょう。
ファイナライザを仕込もうにもThreadはsealedクラス・・・!くっ、手詰まりだ!


教えてえらい人!!