我开始学习线程并编写了这段代码。
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线程
答案 0 :(得分:5)
控制台是一个“线程安全的”&#39; class意味着使用锁在内部调节访问。
如果运气稍差(差),您将在WriteLine()
中间暂停工作线程。
当你的主线程在尝试写入时被搁置,你就会陷入僵局。
答案 1 :(得分:3)
Thread.Suspend
几乎总是不安全的。在这里,您可能暂停整个控制台。想象一下,你已经暂停了system.string
的静态构造函数(偶然)。整个AppDomain
会很快停止。
使用其他方法同步你的线程。