簡體   English   中英

Thread.Sleep為什么不在示例中阻塞線程

[英]Thread.Sleep why not block the thread on example

Thread.Sleep()將主線程保持一定的毫秒數。 我希望Thread.Sleep()阻塞主線程,即使它是從其他線程中調用的( Task.Run()實際上創建了新線程),為什么當涉及PleaseWait() ,主線程上的循環仍在執行自從Thread.Sleep被調用以來? 它應該對我暫停。 還是因為實際上Task.Run在不同線程上調用的Thread.Sleep()現在不完全是主線程的Thread.Sleep ,而是引用Task.Run創建的新線程。 意味着對於主線程來說不是休眠,而是在Task.Run端創建的線程不是Sleep? 希望清楚。

class Program
    {
        static void Main(string[] args)
        {
            Task.Run(() => PleaseWait());

            var n = 0;
            while (n < 10000)
            {
                Console.WriteLine(n);
                n++;
            }

            Console.ReadLine();
        }


        public static void PleaseWait()
        {
            Thread.Sleep(10000);
            Console.WriteLine("After sleep");
        }
    }

我希望Thread.Sleep()阻止主線程,即使它是從其他線程調用的也是如此

讓我們訪問文檔

Thread.Sleep方法

將當前線程掛起指定的時間。

表示它阻塞了調用它的線程,case關閉

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM