C# 线程化(这些线程本身是退出还是中止?)
我只是想问一个关于以下计划的澄清:C# 线程化(这些线程本身是退出还是中止?),c#,.net,multithreading,delegates,C#,.net,Multithreading,Delegates,我只是想问一个关于以下计划的澄清: 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 (lin
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;
}
}
当程序循环时,它会创建很多线程。我只是想问这些线程是结束还是自行退出。如果没有,我如何中止创建的每个线程 当
getEan
方法退出时,每个线程都将结束。如果是这样,那么您不必再做任何事情,线程和线程
对象将完全消失
可以中止线程,但不推荐它,因为它在线程所做的任何事情中抛出异常。建议的方法是与希望结束的线程通信,这样它就可以在代码中方便的位置进行通信。当
getEan
方法退出时,每个线程都将结束。如果是这样,那么您不必再做任何事情,线程和线程
对象将完全消失
可以中止线程,但不推荐它,因为它在线程所做的任何事情中抛出异常。建议的方法是与您希望它结束的线程通信,以便它可以在代码中方便的位置进行通信。将它们作为后台线程,这样当您关闭或中止正在运行的线程时,它们将被关闭 我的建议是不要在这里使用线程;这是一种使用线程的糟糕方式 如果您正在使用.net 4.5,请使用异步等待
如果您正在使用.net 4,请使用任务
如果您正在使用.net 3.5,请使用线程池
如果您正在使用.net 2 backgroundWorker
问候,
Bassam将它们作为后台线程,当您关闭或中止正在运行的线程时,它们将被关闭 我的建议是不要在这里使用线程;这是一种使用线程的糟糕方式 如果您正在使用.net 4.5,请使用异步等待
如果您正在使用.net 4,请使用任务
如果您正在使用.net 3.5,请使用线程池
如果您正在使用.net 2 backgroundWorker
问候,
Bassam请参见:任务完成后线程自行结束。请改用任务类。它们更干净,易于使用,开销更小。请参见:任务完成后线程自行结束。请改用task类。它们更干净,易于使用,开销更小