在C#中立即终止线程?

时间:2014-03-15 15:55:41

标签: c# multithreading terminate abort

我目前正在编写一个运行多个线程的程序,它们都试图将请求发送到Web服务器。我需要一种方法可以终止所有线程,我已经尝试使用Thread.Abort和一个标志,但两者似乎都需要永远终止我正在运行的所有线程和Thread.Abort可能没有事件工作。首先,我将所有线程对象收集到List<Thread>

            Thread thread = new Thread(...);
            thread.IsBackground = true; //Terminate thread when application is shutdown
            checkerThread.Start();
            threadList.Add(thread); //List to hold all thread objects.

所以我尝试的第一种方法是尝试通过Thread.Abort注入异常来强制线程中止。

foreach(Thread thr in threadList)
   thr.Abort();

如上所述,这似乎永远悬而未决。然而,使用标志确实有效,唯一的缺点是它需要永远。

stopped = true; //Boolean flag, threads are on a while loop that check it.

while (threadsAreRunning()) //Function that checks if there any live threads in the list, does not continue until all threads are dead.
{
  Thread.Sleep(50);
}

这个标志不起作用的原因似乎是来自getRequestStream()的{​​{1}}函数在我的线程中运行了很长一段时间,我设置了每个可能的超时但是这个bug似乎是坚持,让我相信问题在于HttpWebRequest函数iteself。

现在我的问题是为什么getRequestStream()在尝试终止这些线程时不起作用?还有其他方法可以终止一个帖子吗?

请原谅任何语法或拼写错误,英语不是我的第一语言。

感谢所有回复此主题的人。

0 个答案:

没有答案