Thread.Sleep()
使主线程保持一定的毫秒数。我希望Thread.Sleep()
会阻塞主线程,即使它是从其他线程中调用的(实际上,Task.Run()
也会创建新线程),为什么在PleaseWait()
上我的主线程循环是自Thread.Sleep
被调用以来仍在执行?它应该对我暂停。还是因为实际上Thread.Sleep()
在Task.Run调用的不同线程上现在对于主线程而言并不是完全正确的Thread.Sleep
,而是指在Task.Run
中创建的新线程。是不是对于主线程而言不是睡眠,而是对于在Task.Run
端创建的线程而言,这不是睡眠吗?希望一切都清楚。
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");
}
}
答案 0 :(得分:6)