执行我在C#下面的代码:C#的Thread.Sleep在错误的位置
if (flag)
{
SendDataToExternalDevice();
System.Threading.Thread.Sleep(delayValue);
}
SendMoreDataToExternalDevice();
这是非常重要的SendDataToExternalDevice()来之前SendMoreDataToExternalDevice()执行delayValue毫秒。但似乎在运行时,程序首先等待delayValue毫秒,然后运行SendDataToExternalDevice()就在之前SendMoreDataToExternalDevice()。为什么是这样?我该如何解决这个问题?
PS。等待时间不一定在毫秒内(一秒钟内就可以),但我不希望这两个函数一个接一个地运行。
更多信息: 我修改代码以这样的:
if (flag)
{
for (int i=0; i<2; i++)
{
SendDataToExternalDevice();
System.Threading.Thread.Sleep(1000);
}
}
SendMoreDataToExternalDevice();
新的代码的结果如下:
SendDataToExternalDevice()称为第一次
等待1秒钟
SendDataToExternalDevice()第二次调用
等待1秒钟
SendMoreDataToExternalDevice()称为
因此,这似乎是工作的罚款。但是,当我运行了2delayValue秒的原代码,它这样做:
等待2秒
SendDataToExternalDevice()
SendMoreDataToExternalDevice()
是否有超过1个线程?顺便说一句,你分配给delayValue的值是什么? –
@Am_I_Helpful,没有只有一个线程。 – Arash
SendMoreDataToExternalDevice()是做什么的?你如何衡量?你可能会看到缓冲。 – SLaks