c# - C# : Does it sleep the thread the object was instantiated in, 中的 Thread.Sleep() 或我从中调用该方法的线程?

标签 c# multithreading

我正在使用 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/

相关文章:

c# - 可用于 nuget 包管理器控制台的不同命令有哪些?

c# - Fluent NHibernate - ProjectionList - ICriteria 返回空值

c# - 使用已编译的 Lambda 表达式而不是 Activator.CreateInstance 来初始化 SoapHttpClientProtocol 对象

c# - 如何在 asp.net web api 中将图像流式传输到客户端应用程序?

c# - 如何在单独的线程上运行 Converter 内的代码,以便 UI 不卡住?

java - "local variables are thread safe"有条件吗?

c# - 在 MonoTouch 中获取多个 TextField 的值

multithreading - Delphi 中的命名线程 - 这是做什么用的?

java - 如何用future来中断一个线程,想要通过future发出的中断来执行一些任务

android - Looper 的目的是什么以及如何使用它?