【问题标题】:Degrading vb.net win application performance [duplicate]降低vb.net win应用程序性能[重复]
【发布时间】:2023-04-05 05:39:02
【问题描述】:

可能重复:
Memory leak in .net application

我正在开发 VB.net 2005 中的桌面应用程序。该应用程序包含一个间隔为 1 分钟的计时器。每次计时器计时,都会执行一组函数,主要是与数据库相关的。最初,应用程序运行良好。在进程(任务管理器)中,每次调用计时器时,cpu 使用率都会达到 100%。但时间跨度约为 1 秒(可忽略不计)。然而,随着时间的推移,大约 20 小时后,timer_tick 的时间跨度增加到 20-30 秒左右。在此期间 cpu 使用率为 100%,应用程序没有响应。 timer_tick 的时间跨度逐渐增加到 1 分钟,cpu 使用卡住到 100%,应用程序没有响应。所有物品均已妥善处置。此外,此问题与奔腾 4 处理器有关。该应用程序在 core 2 duo 上运行良好。 我在我的应用程序中使用 DevEx 控件。 该程序运行良好,数据库中的记录较少。 我已经运行了 CLR Profiler。代码似乎很好。 你能帮我找出性能下降的真正原因吗?

【问题讨论】:

  • -1 表示同一个问题(逐字)问了两次。
  • @Heinzi 感谢您查看问题。但请完整阅读。它包含一些附加的细节。但是我想说的是我不得不修改我之前的问题并再次询问,因为我真的没有得到帮助。感谢您的投票。
  • @GeekOnDemand:您可以随时修改您的旧问题,这也会导致它再次出现在首页上。事实上,如果您没有得到好的答案,这是正确的做法(有关详细信息,请参阅meta.stackexchange.com/q/7046/138661)。再次询问问题(尽管稍作修改)——更糟糕的是,没有链接到你的旧问题——在 StackOverflow 上是不合适的。请不要个人反对,这只是一个指标,表明它没有以“正确的方式”完成。

标签: .net vb.net winforms devexpress


【解决方案1】:

也许你可以在后台执行你的代码:

   Private WithEvents _bg As System.ComponentModel.BackgroundWorker
    Public Sub executeYourCode()
        If _bg Is Nothing Then
            _bg = New System.ComponentModel.BackgroundWorker
            AddHandler _bg.DoWork, AddressOf startExecute
            AddHandler _bg.RunWorkerCompleted, AddressOf endExecute
        End If
        If Not _bg.IsBusy Then  _bg.RunWorkerAsync()
    End Sub

【讨论】:

  • 然后创建一个子 startExecute 并粘贴你的代码
  • 这对降低性能问题有何帮助?性能不会在后台线程中下降吗?是的,这将使应用程序保持响应,但它不能解决“性能下降的真正原因”。
  • 我完全同意 Heinzi 的观点。同样的事情正在发生。 CPU 使用率再次增加到 100%,但唯一的区别是这次它在后台。 :(
猜你喜欢
  • 2012-06-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多