2011-09-03 58 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()函数。相反,只需编写一个循环来反复调用它。