一个线程暂停

时间:2014-08-10 07:33:01

标签: c# multithreading

我开始学习线程并编写了这段代码。

static void Main(string[] args)
{
    Thread DoAction = new Thread(StartAction);
    DoAction.Start();
    for (int i = 0; i < 10000000; i++)
    {
        Console.WriteLine("Main Thread: {0}", i);
        if (i == 10000) DoAction.Suspend();
    }
}

static void StartAction()
{
    for(int i=0;i<int.MaxValue;++i)
    {
        Console.WriteLine(i);
    }
}

当i == 10000时,我的应用程序停止了。我想暂停只有DoAction线程

2 个答案:

答案 0 :(得分:5)

控制台是一个“线程安全的”&#39; class意味着使用锁在内部调节访问。

如果运气稍差(差),您将在WriteLine()中间暂停工作线程。 当你的主线程在尝试写入时被搁置,你就会陷入僵局。

答案 1 :(得分:3)

Thread.Suspend几乎总是不安全的。在这里,您可能暂停整个控制台。想象一下,你已经暂停了system.string的静态构造函数(偶然)。整个AppDomain会很快停止。

使用其他方法同步你的线程。