Visual Studio C++ WinForms应用程序在64位构建中非常慢

8ehkhllq  于 2023-10-23  发布在  其他
关注(0)|答案(1)|浏览(131)

我有一个WinForms应用程序,它在32位下运行得很好,在64位下运行得非常慢(无论是编译版本还是发布版本)。支持.NET Framework 4.0,Windows 10。安装不同版本的Visual Studio。
非常慢意味着32位1秒,64位10分钟。
我有一种感觉,缓慢发生在填充DataGridView的过程中,但我不能确定。
我试过使用Profiler,但所有的时间都花在[外部代码]上,这是完全不透明的。
你是否遇到过类似的问题?我如何调查?

mrfwxfqh

mrfwxfqh1#

我终于明白了这个问题,与GridView无关,而是与TrackBar有关,它被分配了一个太大的最大值,对应于大量的刻度线。
这个问题很难追踪,原因有三:

  • 它只发生在64位的构建中,
  • 它与GUI更新异步发生,
  • 它需要混合模式调试,因为代码在托管和非托管代码之间交替。

我只能通过遵循@Paul Sanders的方法来发现它:随机暂停调试器并检查调用堆栈(在加载相关符号后)。经过多次尝试,我看到了对TrackBar方法的引用。

相关问题