2017-06-21 148 views
0

我在vb.net中有一個應用程序,我正在Windows 10中進行測試,並且我似乎正在收到一個錯誤(下圖)。這個應用程序完美地運行在Windows 7中,並且它在Windows 10中沒有任何問題,但問題在於,當我退出應用程序時出現錯誤。在應用程序中發生未處理的win32異常

它的結構方式是,如果我從IDE運行它,我首先看到用戶登錄的登錄窗口,然後進入菜單。如果它運行在我們的環境中,用戶不必登錄,所以登錄表單不會出現,它直接進入菜單。

一切都很正常,直到我去退出應用程序,它得到所有凌亂,這是由退出按鈕的代碼...

Dim Answer as Integer 
    Answer = MsgBox("Are you sure you wish to Close the application ?", MsgBoxStyle.YesNo) 
    If answer = vbYes Then 
     End 
    End If 

這些都是錯誤的,我得到:

enter image description here 首先,我得到這個錯誤,點擊關閉程序完全關閉它,如果我點擊調試,我得到下面的窗口....

enter image description here

第二個錯誤顯示我實際上有VS2010和VS2012,它讓我調試。問題是,源代碼在TFS中,而且恰好我無法從我的Windows 10機器(僅從Win 7)訪問TFS。所以我無法調試它。但是,這是爲什麼只發生在Windows 10中的原因嗎?

我甚至在完成前使用Me.Close()以使表單關閉。再次,它在Win 7中運行良好,但贏了10它也給我帶來了同樣的問題。

+0

更換

Application.Exit() 

什麼是變量「響應」拿着用,和爲什麼你檢查它的價值? 「答案」實際上是保留了消息箱的返回值。 – soohoonigan

+0

@soohoonigan我的壞我改變了一些代碼,現在修復 – BobSki

+1

看看[這個問題](https://stackoverflow.com/questions/18036216/win32exception-was-unhandled-visual-basic-when-點擊退出按鈕)並回答。該問題的意見也有助於解釋爲什麼使用「結束」可能有問題 – soohoonigan

回答

1

使用「結束」關閉程序可能會有問題;該評論和回答爲this SO question解釋了這是爲什麼。至於第二個使用Application.Exit()彈出的問題,那就是程序引用多個程序集的函數調用時使用相同名稱的一個簡單情況。在這種情況下,顯式導入的Microsoft.Office.Interop.Excel和隱式導入的System.Windows.Forms都具有「Application.Exit()」成員。由於您已經明確導入了Excel,因此在編譯器被迫決定使用哪個Exit()時,編譯器會使用該函數,由於正在使用它的上下文而引發錯誤,並且不會真正關閉程序。要糾正的是,所有你需要做的就是明確地告訴編譯器,退出()你想用

System.Windows.Forms.Application.Exit() 
相關問題