首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >我的程序用EmptyWorkingSet函数来提高性能?危险吗?

我的程序用EmptyWorkingSet函数来提高性能?危险吗?
EN

Stack Overflow用户
提问于 2011-04-21 17:17:31
回答 1查看 2.5K关注 0票数 1

我们正在为餐馆开发自动化软件(使用VS.NET C#)。我们正在使用POS产品,其中大多数都有celeron或atom处理器,上面有512 mb或1gb内存。所以在一开始就知道我们不能得到更强大的个人电脑(我看到了这样的建议:“给你的客户一个更好的PC”)。

我们的记忆有问题。为了表示实际客户的购物车,我们使用面板,添加自定义控件来表示购物车中的产品。这意味着许多控件正在添加到面板中,然后删除(Panel.controls.Clear函数)。这种方法会导致内存泄漏,程序性能会变慢。在搜索和googling之后,我发现Panel.Control.Clear()函数清除了面板中的所有控件,但没有从内存中清除。所以我禁用了面板来检查,所有的东西都正常工作。没有记忆泄漏了。所以我决定移除那块推车板来保存记忆。但后来我在这里发现了非常有用的建议,比如EmptyWorkingSet。

代码语言:javascript
运行
复制
    [DllImport("psapi.dll")]
    static extern int EmptyWorkingSet(IntPtr hwProc);

    static void MinimizeFootprint()
    {
        EmptyWorkingSet(Process.GetCurrentProcess().Handle);
    }

然后我添加了代码,启用了购物车面板,没有什么改变。性能仍然是good.No内存泄漏,没有性能下降。但是有人说,在herehere中,EmptyWorkingSet可能会导致页面错误,这是危险的。我是测试项目但什么都没发生。就像一种魅力。所以这些是我的选择

删除导致内存problems.

  • After从cartPanel中清除自定义控件的cart面板,从内存中删除自定义控件(我不知道,但我可以搞清楚)

  • 使用EmptyWorkingSet,但它可能会导致页面错误(老实说,我不知道页面故障意味着什么)

那你觉得呢

EN

回答 1

Stack Overflow用户

发布于 2011-04-21 17:22:00

我认为问题在于,您正在清除控件的集合,而此时您应该对它们进行处理。此外,在清除控件之前,一定要取消将任何事件处理程序与控件挂钩,因为事件处理程序在对象之间设置引用,因此事件的侦听器将导致在其他情况下有资格使集合对象停留。我要走那条路,然后才能强制清理工作装置。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5747518

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档