Windows 带有 AutoWaitCursor 的表单应用程序 - 如果平台是 x64 或任何平台,VS2013CE 调试器会崩溃 CPU

Windows Forms app with AutoWaitCursor - crashing in VS2013CE debugger if platform is x64 or ANY CPU

我创建了一个最小的 Windows Forms 项目,我添加了 AutoWaitCursor 来演示 https://github.com/rluiten/WinForm-AutoWaitCursor-Problem

处的问题

请注意 AutoWaitCursor 在原来的 link 中不再可用,我从 http://www.vbusers.com/codecsharp/codeget.asp?ThreadID=58&PostID=1&NumReplies=0

得到它

如果我在 Visual Studio 中启动此 Windows Forms 项目,在我的 64 位 Windows 7 PC 上使用 "Any CPU" 或 "x64" 的调试器和平台我看到 "vshost.exe has stopped working" 对话框出现,应用程序崩溃了。

使用调试器启动并将平台设置为 "x86" 不是问题。在没有调试器的情况下启动对于任何平台都不是问题。在 Visual Studio 之外启动生成的编译二进制文件尚未出现相关问题。

它似乎是 AutoWaitCursor 与 Visual Studio 2013 调试器和 64 位模式的耦合。我相信目前我过去使用的 VS2012 没有表现出这种行为,但我目前无法验证。虽然这个问题不是问题。

我想了解或解决这个问题,但在这方面还没有取得任何进展。

在 SendMessageTimeout 的签名中,将 int 和 string(!) 参数更改为 IntPtr。

在_IsApplicationBusy中,将result改为IntPtr;使用 IntPtr 作为您在 API 签名中更改的参数;最后一行应该是 return result != IntPtr.Zero;

使用您的 github 应用测试一切是否正常,将一个按钮拖放到表单上,然后 运行 Thread.Sleep(3000);在点击处理程序中。