在 .NET Framework 2.0 版中, Thread..::.Suspend 和 Thread..::.Resume 方法已標記為過(guò)時(shí),并將從未來(lái)版本中移除。 還可以通過(guò)調用 Thread..::.Suspend 來(lái)暫停線(xiàn)程。當線(xiàn)程針對自身調用 Thread..::.Suspend 時(shí),調用將會(huì )阻止,直到另一個(gè)線(xiàn)程繼續該線(xiàn)程。當一個(gè)線(xiàn)程針對另一個(gè)線(xiàn)程調用 Thread..::.Suspend 時(shí),調用是非組阻止調用,這會(huì )導致另一線(xiàn)程暫停。無(wú)論調用了多少次 Thread..::.Resume ,調用 Thread..::.Suspend 均會(huì )使另一個(gè)線(xiàn)程脫離掛起狀態(tài),并導致該線(xiàn)程繼續執行。例如,如果將 Thread..::.Suspend 連續調用五次,然后調用 Thread..::.Resume ,則該線(xiàn)程將在調用 Thread..::.Resume 后立即繼續執行。與 Thread..::.Sleep 不同, Thread..::.Suspend 不會(huì )導致線(xiàn)程立即停止執行。公共語(yǔ)言運行庫必須一直等待,直到線(xiàn)程到達安全點(diǎn)之后它才可以將該線(xiàn)程掛起。如果線(xiàn)程尚未啟動(dòng)或已經(jīng)停止,則它將不能掛起。有關(guān)安全點(diǎn)的詳細信息,請參見(jiàn) Thread.Suspend、垃圾回收和安全點(diǎn) 。重要說(shuō)明: Thread..::.Suspend 和 Thread..::.Resume 方法通常并不是對所有應用程序都有用,并且不應將其與同步機制混淆。由于 Thread..::.Suspend 和 Thread..::.Resume 不依賴(lài)于受控制線(xiàn)程的協(xié)作,因此,它們極具侵犯性并且會(huì )導致嚴重的應用程序問(wèn)題,如死鎖(例如,如果掛起的線(xiàn)程占有另一個(gè)線(xiàn)程需要的資源,就會(huì )發(fā)生這種情況)。 某些應用程序確實(shí)需要控制線(xiàn)程的優(yōu)先級以提高性能。為了做到這一點(diǎn),應該使用 Priority 屬性而不是 Thread..::.Suspend 。
聯(lián)系客服