重载应用程序冻结



我们有一个客户端-服务器 C# 应用程序,当我们使用某些脚本而不是在 UI 中单独创建 UI 中创建 1000 种或更多类型的对象时,该应用程序会冻结。

我们正在为某些事件使用大量事件处理程序,但根据我的理解,所有线程(UI 和背景(和事件处理程序都得到了妥善管理。然后我们的客户端应用程序也会冻结。我们不知道背后的确切原因是什么. 高峰时间挂起应用程序大约需要 16 个线程。 任务管理器报告它占用超过 90% 的 CPU 时间。

谁能告诉我背后的原因

   [STAThread]
    static void Main()
    {
        try
        {
            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);
            Application.DoEvents();
            Application.Run(new Test());
        }

更新

如何向树视图、列表视图和属性网格进行延迟加载。我使用了开始更新,结束更新,双缓冲,除了这些任何方法??

更新

高 CPU 利用率

是什么意思,我的应用程序 exe 挂有 13 个线程,我听说如果你使用 ThreadPriority.Lowest它会降低 CPU 利用率,它仍然会工作我不知道在哪里正确使用它吗?

听起来您需要某种延迟加载技术,以便在用户向下滚动窗体时按需加载控件。一次加载如此多的控件将不可避免地锁定应用程序。

本文提供了一些有关如何提高winform 应用程序性能的好提示:

  • 提高 Windows 窗体应用程序性能的实用技巧

树视图和列表视图本身效率不高,并且没有添加大量逻辑。如果您没有时间优化它们,您可能需要查看第三方解决方案,例如惊人的开源 ObjectListView。

它有几种处理特定情况的风格,例如处理数百万条记录的 FastObjectListView 或处理层次结构的 TreeListView!

掌握确实需要一些努力,但远不及将Treeviews和Listviews变成..wellObjectListViews:D

http://objectlistview.sourceforge.net

http://objectlistview.sourceforge.net/cs/recipes.html#what-flavour-of-objectlistview-do-i-want-to-use

http://objectlistview.sourceforge.net/cs/recipes.html

http://objectlistview.sourceforge.net/cs/gettingStarted.html

我自己在几个项目中使用它,取得了巨大的成功!!

干杯

相关内容

  • 没有找到相关文章