检测一个没有响应的线程并终止它?

时间:2013-11-16 20:36:56

标签: c# multithreading kill-process

有时后台线程运行缓慢而且没有响应,响应,没有响应......

是否可以检测到然后终止它然后重新启动它? 我做这样的线程。 Form3只包含一个Web浏览器控件,只能导航和搜索Web文档。

Thread ab1 = new Thread(new ThreadStart(ThreadProc));
ab1.SetApartmentState(ApartmentState.STA);
ab1.Start();

private void ThreadProc()
{
    Form frm = new Form3(currentAB);
    frm.ShowDialog();

}

2 个答案:

答案 0 :(得分:3)

另一种方法是在线程上使用Timer并在每一定时间内调用它,检查线程是否已经死亡。

Systems.Threading.Timer类可以帮助你

http://msdn.microsoft.com/en-us/library/vstudio/swx5easy.aspx

答案 1 :(得分:0)

尝试此操作,这将仅检查线程是否有效但不意味着将检测线程是否在长时间运行操作中被阻止

 public partial class Form1 : Form
  {
     Thread ab1;   
     public Form1()
    {
         InitializeComponent();
        Thread ab1 = new Thread(new ThreadStart(ThreadProc));
        ab1.SetApartmentState(ApartmentState.STA);
        ab1.Start();
        bool isAlive = true ;
        TimerCallback tmrCallBack = new TimerCallback(CheckStatusThreadHealth);  
        System.Threading.Timer tmr = new System.Threading.Timer(tmrCallBack,isAlive,2000,2000);
     }
     public void CheckStatusThreadHealth(object isAlive)
     {
         isAlive = ab1.IsAlive ;  
     }
     private void ThreadProc()
     {
         Form frm = new Form1();
        frm.ShowDialog();

     }

希望这个帮助