【发布时间】:2013-08-03 18:57:44
【问题描述】:
我正在使用 Microsoft Visual Studio 2010 32 位高级版 (Microsoft Visual Basic 2010) 构建一个表单。当我编译代码时没有任何错误,但是每当我点击退出按钮时,它都会给我这个消息:
Win32Exception 未处理”“创建窗口句柄时出错”。
此错误的原因是什么?如何解决?
我在大学的实验室中编写了这段代码,并且运行良好。但是当我在家里运行它时,我得到了这个错误。
Private Sub btnExit_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnExit.Click
If MsgBox("Are you sure you want to exit the program?", MsgBoxStyle.Exclamation + MsgBoxStyle.YesNo) Then
End ' error creating window handle
End If
End Sub
我使用的是 Windows 8 64 位和 Microsoft Visual Studio 2010 32 位高级版。
【问题讨论】:
-
您不要调用
End来退出程序。这是Application.Exit或Me.Close! -
为什么
End会产生如此神秘的异常更有趣。这是结束程序的一种完全有效的方式。就像 Environment.Exit() 一样,也不再起作用了。可惜没人感兴趣。 -
@HansPassant 在我的整个发展职业生涯中致电
End已向我解释为坏事,就像坏事的坏事一样。它关闭应用程序而不正确关闭所有消息泵。它不允许任何调用代码干净地清理。它可能在某些地方工作得很好,但在其他地方会伤害你。有人告诉我这是不好的做法。 -
@DonA - 好吧,然后使用 Environment.Exit() 。例如,您将在 AppDomain.UnhandledException 的事件处理程序中使用什么。您向用户显示错误,他单击“确定”,然后 Kaboom!两次不少。这是一个相当严重的 Windows 错误,非常新。
-
8 月 14 日,Windows 更新在我的机器上解决了这个问题。