private void ThreadNotification(THREAD thread)
 {
     if (thread.State != THREADSTATE.TERMINATED){
         FormCotrolHelper.ControlInvike(threadList, () => {
             ListViewItem item = new ListViewItem(thread.Id.ToString().Trim());
             item.Name = thread.Id.ToString().Trim();
             item.Text = thread.Id.ToString().Trim();
             item.SubItems.Add("Alive");
             item.ForeColor = Color.GreenYellow;
             threadList.Items.Add(item);
         });
     }else{
         FormCotrolHelper.ControlInvike(threadList, () => {
             ListViewItem[] item = threadList.Items.Find(thread.Id.ToString().Trim(), true);
             if (item != null)
             {
                 item[0].ForeColor = Color.Red;
                 item[0].SubItems[1].Text = "Dead";
             }
         });
     }
 }
 static private void ThreadNotification(THREAD thread)
 {
     Console.WriteLine("Thread" + thread.Id);
 }
 void debug_ThreadNotification(CorDebugAppDomain app, CorThread thread, bool isAlive)
 {
     THREAD _thread = new THREAD();
     _thread.Id = thread.ID;
     _thread.ProcessId = debug.Process.ID;
     if (isAlive){
         _thread.State = THREADSTATE.RUNNING;
         liveThreads.Add(thread.ID, thread);
     } else {
         _thread.State = THREADSTATE.TERMINATED;
         liveThreads.Remove(thread.ID);
         deadThreads.Add(thread.ID, GetCallStack(thread));
     }
     ThreadNotification(_thread);
 }