c#中的thread . sleep():是让对象实例化的线程休眠,还是让我从中调用方法的线程休眠

本文关键字:线程 休眠 方法 调用 实例化 sleep thread 中的 对象 | 更新日期: 2023-09-27 18:15:30

我正在c#中编写一个程序,该程序有一个主线程,我在其中创建了一堆类技能的实例。例如:_fire, _ice, _thunderbolt。你可能已经猜到了,这些是各种魔法技能。

从主线程,我产生第二个线程,并使用它来做很多后台工作。除其他事项外,我想让该线程调用类技能中的方法,称为useSkill()。

问题:如果我在那个useSkill()方法中放置一个thread . sleep(1000),它会休眠主线程,对象被实例化的地方,还是会休眠后台线程,方法被调用的地方?

非常感谢!

c#中的thread . sleep():是让对象实例化的线程休眠,还是让我从中调用方法的线程休眠

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

所以如果你在主线程中实例化对象,但是调用UseSkill()方法,其中包含线程A的Thread.Sleep(..),那么线程A将被阻塞或休眠。然而,如果你从构造函数中调用UseSkill()方法并在主线程中实例化对象,主线程将被阻塞/休眠。

同样,您可以使用Threads窗口来调试并查看阻塞将发生在哪个线程中(在调试时转到debug -> Windows -> Threads )。