簡體   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