Jam*_*mes 0 c# multithreading thread-sleep
因此,我的程序基本上是创建Main的子线程并从用户获得一个整数作为输入,并通过将其计数为1000将该数字转换为milisecond.
但是在for循环中,当我输入数字5作为输入时,Thread.Sleep()会休眠大约10秒.
代码:
static void CallToChildThread()
{
Console.WriteLine("How many seconds do you want this thread to rest?");
int time = Convert.ToInt32(Console.Read());
int mili = time * 1000;
for (int i = 0; i < time; i++)
{
Console.Write(". ");
Thread.Sleep(mili);
}
Console.WriteLine();
}
Run Code Online (Sandbox Code Playgroud)
因此,当我键入5时,代码将乘以5乘以1000并将5000存储在mili中.
但是,在for循环中,当执行Thread.Sleep(mili)时,它不会整整睡5秒,它会在循环中迭代一次后休眠10秒.
此外,当我用5000更改替换mili以使线程休眠5秒时,每次循环,并且它工作,但循环迭代超过我的预期.例如,这是我输入的输入:
How many seconds do you want this thread to rest?
5
. . . . . . . . . .
Run Code Online (Sandbox Code Playgroud)
每次迭代时它都会正常计算5秒.但它迭代超过5.如果我键入5然后不应该for循环迭代5次并中止?只显示5个时期?
Console.Read()读取一个字符,然后将其ASCII码转换为int.
53如果输入5以下内容,则打印
Console.WriteLine("{0}", Console.Read());
Run Code Online (Sandbox Code Playgroud)
顺便说一句,你将5乘以1000,然后睡觉已经乘以的值.所以在循环中睡觉的总时间似乎是5 * 5 * 1000,而不是5 * 1000ms.这是故意的吗?