2012-06-04 43 views
1

我想製作一個互聯網檢查程序,但我不知道這個PinvokeStackImbalance有什麼問題。實際上,代碼是針對Visual Basic 2008年提出的,但我真的使用的Visual Basic 2010PInvokeStackImbalance被檢測到 - Visual Basic 2010

WebTest的= CBool​​函數(的InternetGetConnectedState(dwFlags中,0 &))

在哪裏的問題?順便說一句,這是一個模塊。

+1

你能顯示導入使用的聲明嗎? – Steve

回答

5

當您使用該函數的錯誤聲明時,您將獲得該MDA警告。這在VB.NET中很常見,在因特網上有很多舊的VB6聲明,這些聲明在VB.NET中不起作用。一個確定的麻煩跡象是這個特殊的函數,它需要兩個類型爲DWORD的參數,如果在聲明中看到長的,那麼你的VB6版本就不好了。

獲得來自的PInvoke互操作助理工具或pinvoke.net網站相當可靠聲明:

Private Declare Function InternetGetConnectedState Lib "wininet.dll" _ 
        (ByRef lpdwFlags As Int32, ByVal dwReserved As Int32) As Boolean 

Private Enum ConnectionStates 
    Modem = &H1 
    LAN = &H2 
    Proxy = &H4 
    RasInstalled = &H10 
    Offline = &H20 
    Configured = &H40 
End Enum 
+0

這是正確的答案,這對我有用,謝謝! –

1

轉到:

  1. 調試 - 例外 - 託管調試助手

,然後取消選中:

  1. ContextSwitchDeadlock
  2. PInvokeStackImbalance

之後,沒有更多的消息。