移动窗口时,我的应用程序执行速度较慢

时间:2015-02-18 13:06:59

标签: c# .net winforms stopwatch

我的问题对你来说可能看起来很愚蠢,但我意识到移动我的应用程序表单会使其中的代码运行得更慢。例如。当我加载位图图像并在其上应用一些图像编辑算法时,整个过程需要大约22秒才能完成。但是如果我在执行期间移动表单,它会为经过的时间增加3-4秒。我能够使用秒表发现延迟。那么,如果可能的话,我怎么能绕过这种行为?

1 个答案:

答案 0 :(得分:0)

这只是一个需要您调查的假设,因为您没有发布任何代码,因此无法真正知道发生了什么。


最有可能的是,您将图像边界移到屏幕外。当您再次移入时,窗口引擎将对要重绘的那些矩形执行一些绘制调用。放大时调整大小时会发生同样的情况,但缩小窗口时则不会。

如果是这种情况,只要您不覆盖/揭开图像区域,就不会有任何额外的平局电话。

所以这不是一个答案,但在你的位置,我会覆盖Paint()方法并记录多少次调用。基于此,我会搜索一个解决方案,例如禁止这样的调用:

public override void Paint()
{
    if (algorithmRunning)
    {
        return; // suppress any further computations
    }

    base.Paint(); // do actual redraws
}

此代码只是一个示例,您必须根据MSDN文档修复它。

你不应该做的只是加入OnPaint()事件,因为那时你仍然会调用实际的Paint()方法。