【问题标题】:Threading (Does these threads exits or aborts itself?)线程(这些线程是自行退出还是中止?)
【发布时间】:2013-08-10 09:11:31
【问题描述】:

我只是想对以下程序进行澄清:

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;
    }
}

程序循环时会创建很多线程。我只是想问一下这些线程是结束还是自行退出。或者如果没有,我如何中止创建的每个线程?

【问题讨论】:

标签: c# .net multithreading delegates


【解决方案1】:

每个线程将在getEan 方法退出时结束。如果是这样,那么您不必再做任何事情,线程和Thread 对象将彻底消失。

可以中止线程,但不建议这样做,因为它会在线程正在执行的任何操作中引发异常。推荐的方式是与您希望它结束​​的线程进行通信,以便它可以在代码中方便的位置执行此操作。

【讨论】:

    【解决方案2】:

    将它们设置为后台线程,而不是在您关闭或中止正在运行的线程时关闭。

    我的建议不要在此使用线程;这是使用线程的一种不好的方式。

    如果您使用 .net 4.5,请使用异步等待
    如果您使用 .net 4,请使用 Task
    如果您使用 .net 3.5,请使用 ThreadPool
    如果您使用 .net 2 backgroundWorker

    问候,
    巴萨姆

    【讨论】:

      猜你喜欢
      • 2011-06-07
      • 2013-08-25
      • 1970-01-01
      • 2014-08-18
      • 1970-01-01
      • 1970-01-01
      • 2021-02-20
      • 2012-08-06
      • 1970-01-01
      相关资源
      最近更新 更多