繁体   English   中英

C#中的Thread.Sleep():它是否休眠了实例化对象的线程,或者我从中调用方法的线程?

[英]Thread.Sleep() in C#: Does it sleep the thread the object was instantiated in, or the thread i am calling the method from?

我正在C#程序上工作,该程序有一个主线程,在其中我创建了一堆类Skill的实例。 例如:_fire,_ice,_thunderbolt。 您可能已经猜到了,这些是各种魔术技能。

在主线程中,我产生了第二个线程,并使用它来执行许多后台工作。 除其他外,我希望该线程在Skill类中调用一个方法,称为useSkill()。

问题:如果我在该useSkill()方法中放置Thread.Sleep(1000),它将休眠主线程(实例化对象的位置),还是休眠背景线程(从何处调用该方法)?

非常感谢!

Thread.Sleep(..)阻止/休眠当前线程: MSDN

因此,如果您要实例化主线程中的对象,但从线程A调用包含Thread.Sleep(..)UseSkill()方法,则线程A将被阻塞或休眠。 但是,如果您从构造函数调用UseSkill()方法,并在主线程中实例化该对象,则主线程将被阻塞/休眠。

此外,您还可以使用线程窗口调试,看看在哪个线程将发生阻塞(去调试- >窗口- > 在调试线程)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM