【发布时间】:2013-03-04 19:40:23
【问题描述】:
我有一个包含 System.Windows.Forms.TrackBar 的控件。我将其最大值设置为~200,000,000。当我这样做时,控件需要 800MB 内存。将最大值减少到 2,000,000 使用的内存量更合理。
//trackBar.Maximum = 210554060; // uses ~800MB of memory
trackBar.Maximum = 1000000; // uses a small amount of memory
这是 Windows 控件中的错误吗?还是我要求trackbar做一些不合理的事情?
更新: 我创建了一个新的 Windows 窗体项目,窗体上只有一个轨迹栏。我将最大值设置为 200,000,000。我设置了 TickFrequency 和更改,以便没有数百万个刻度和更改步骤。
当我这样做时,应用程序使用了超过 800MB 的内存。我正在使用 .NET Framework 4。
.
更新 我找到了对此问题的某种解释:http://www.tech-archive.net/Archive/DotNet/microsoft.public.dotnet.framework.windowsforms.controls/2006-12/msg00015.html
添加测试项目的链接 https://www.dropbox.com/s/nh6jsymw05feoqn/testingTrackbar.zip?m
【问题讨论】:
-
你如何确定它使用了大量的内存?
-
@ImmortalBlue:见this post 至于缩小到TrackBar,我将trackbar 的最大值更改为1000000,并使用资源监视器工具查看提交内存。我想我应该确保问题不是使用该最大值的其他问题。
-
好吧,我刚刚做了一个点头复制,最大尺寸对我的应用程序没有任何影响。因此,我怀疑它实际上是使用这么多内存的轨迹栏。您是否将某些内容绑定到轨迹栏最大值?
-
@ImmortalBlue 我已经在一个新项目中进行了复制并且得到了相同的结果。查看更新。
-
你能把项目(带有编译后的 exe)发布到某个地方,看看我们是否可以在另一个设置上重现吗?
标签: c# .net memory max trackbar