2011-05-31 26 views
12

Visual Basic'te iş parçacığı içermeyen basit bir uyku işlevi var mı. C: orada var gibi benzerUyku işlevi Visual Basic

şey sleep(1);

Biz de bu kodu çalıştı:

Declare Sub Sleep Lib "kernel32" (ByVal milliseconds As Long) 
' pause for 5 seconds 
Sleep 5000 

... ama işe yaramadı. Eğer .NET hakkında soruyorsun yana

PInvokeStackImbalance was detected Message: A call to PInvoke function 'Ganzenbordspel!Ganzenbordspel.Spel::Sleep' has unbalanced the stack. This is likely because the managed PInvoke signature does not match the unmanaged target signature. Check that the calling convention and parameters of the PInvoke signature match the target unmanaged signature.

cevap

15

, sen Long den Integer parametreyi değiştirmelisiniz: Bana bu hata verdi. .NET'in tamsayı 32 bittir. (Klasik VB'ın tamsayı sadece 16-bit oldu.)

Declare Sub Sleep Lib "kernel32.dll" (ByVal Milliseconds As Integer) 

Gerçekten de, yönetilen yöntem zor değildir ... Bunu yaparken

System.Threading.Thread.CurrentThread.Sleep(5000) 

dikkatli olun. Bir form uygulamasında, mesaj pompasını engellersiniz ve ne yapmazsınız, programınızın askıya alınmış görünmesini sağlarsınız. Nadiren sleep iyi bir fikir.

25

Bu bir çok kolaylıktır.

Threading.Thread.Sleep(3000) 
İlgili konular