我只是想对下面的程序进行澄清:
foreach (Match match in MC)
{
string link = match.Groups["link"].ToString();
if (link.Contains("ebay.de/itm/"))
{
int endIndex = link.IndexOf("?pt");
link = link.Substring(0, endIndex);
if (link != lastLink)
{
getEanPerLink = delegate
{
getEan(link);
};
new Thread(getEanPerLink).Start();
}
lastLink = link;
}
}
程序循环时会产生很多线程。我只想问这些线程是否结束或退出。或者如果没有,我如何中止每个创建的线程?
答案 0 :(得分:3)
每个线程将在getEan
方法退出时结束。如果确实如此,那么您不必再做任何其他事情,线程和Thread
对象将彻底消失。
可以中止线程,但不推荐使用它,因为它会在线程正在执行的任何操作中抛出异常。建议的方法是与您希望它结束的线程进行通信,以便它可以在代码中方便的位置执行此操作。
答案 1 :(得分:1)
将它们作为后台线程,而不是在关闭或中止正在运行的线程时关闭它。
我的建议不要在此使用线程;这是一种使用线程的坏方法。
如果你使用.net 4.5使用async await
如果你使用.net 4使用任务
如果你使用.net 3.5使用ThreadPool
如果你使用.net 2 backgroundWorker
Greertings,
巴萨姆