我正在使用 C# 编写一个程序,该程序有一个主线程,我在其中创建了一堆 Skill 类的实例。示例:_fire、_ice、_thunderbolt。您可能已经猜到了,这些是各种神奇的技能。
我从主线程生成了第二个线程,并用它来做很多后台工作。除其他事项外,我想让该线程调用类 Skill 中的一个方法,称为 useSkill()。
问题:如果我在那个 useSkill() 方法中放置一个 Thread.Sleep(1000),它会在实例化对象的主线程中休眠,还是会在后台线程中休眠, 该方法是从哪里调用的?
非常感谢!
最佳答案
Thread.Sleep(..)
阻塞/休眠当前线程:MSDN
因此,如果您要在主线程中实例化对象,但从线程 A 调用包含 Thread.Sleep(..)
的 UseSkill()
方法,那么线程A 将被阻塞或休眠。但是,如果您从构造函数调用 UseSkill()
方法并在主线程中实例化该对象,则主线程将被阻塞/休眠。
此外,您可以使用“线程”窗口进行调试并查看阻塞会发生在哪个线程中(转到“调试”->“窗口”->“线程”调试时)。
关于c# - C# : Does it sleep the thread the object was instantiated in, 中的 Thread.Sleep() 或我从中调用该方法的线程?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25017683/