執行我在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