2011-09-03 77 views
0

我一直在努力檢查MySQL數據庫來檢查某些內容 - 但是由於它不斷檢查數據庫,程序停止響應。是否有可能等待幾秒鐘來重新檢查數據庫?我曾嘗試睡眠(),但它給人一種奇怪的錯誤:如何等待MySQL在VB.NET中更新?

A call to PInvoke function 'Game!WindowsApplication1.Form1::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.

我一直在尋找這個相當長的一段時間,我在一個困境。我確實需要經常檢查MySQL數據庫。我在再次檢查之前嘗試進行網絡瀏覽器刷新 - 但它開始滯後於應用程序。

代碼:

function updateit() 
' SQL Code goes here, it succeeds. 
updateit() ' Update it again. 
return true 
end 

updateit() 
+2

請發佈您的代碼。 –

回答

1

嘗試從一個單獨的線程做你檢查。嘗試將BackgroundWorker拖動到表單上並放入支票,以使程序更具響應能力。儘管如此,我從來沒有見過這個錯誤。它是System.Threading.Thread.Sleep()或特定於VB的東西嗎?

看着你的代碼,它看起來像你有無限遞歸。這將導致一個計算器...嘗試

while(true) 
'SQL code 
end 
+0

當我做一個循環時,程序仍然停止響應,這就是我想要避免的。 – alex

+0

你需要把你的代碼放在另一個線程中。嘗試使用BackgroundWorker – rotard

+0

我從來沒有這樣做過,你能給我說明嗎? – alex

2

你的代碼示例顯示了一個沒有基本情況的遞歸函數。其結果總是堆棧溢出(.Net中的不可捕捉異常)。

不要在函數本身內調用updateit()函數。相反,只需編寫一個循環來反覆調用它。