C# 当我移动窗口时,我的应用程序执行速度较慢
我的问题在你看来可能很傻,但我意识到移动我的应用程序表单会使其中的代码运行得更慢。例如,当我加载位图图像并对其应用一些图像编辑算法时,整个过程大约需要22秒才能完成。但是如果我在执行过程中移动表单,它会增加3-4秒的额外时间。我能用秒表发现延迟。那么,如果可能的话,我该如何避免这种行为呢?这只是一个假设,需要您进行调查,因为您没有发布任何代码,因此不可能真正知道发生了什么C# 当我移动窗口时,我的应用程序执行速度较慢,c#,.net,winforms,stopwatch,C#,.net,Winforms,Stopwatch,我的问题在你看来可能很傻,但我意识到移动我的应用程序表单会使其中的代码运行得更慢。例如,当我加载位图图像并对其应用一些图像编辑算法时,整个过程大约需要22秒才能完成。但是如果我在执行过程中移动表单,它会增加3-4秒的额外时间。我能用秒表发现延迟。那么,如果可能的话,我该如何避免这种行为呢?这只是一个假设,需要您进行调查,因为您没有发布任何代码,因此不可能真正知道发生了什么 很可能是将图像的边界移到屏幕外。当您再次移入时,窗口引擎将对要重新绘制的矩形执行一些绘制调用。放大窗口时调整大小也会发生同
很可能是将图像的边界移到屏幕外。当您再次移入时,窗口引擎将对要重新绘制的矩形执行一些绘制调用。放大窗口时调整大小也会发生同样的情况,但缩小窗口时则不会 如果是这种情况,那么只要不覆盖/揭开图像区域,就不会遇到任何额外的绘制调用 因此,这不是一个答案,但在您的位置上,我将覆盖
Paint()
方法并记录有多少多余的调用。基于此,我会搜索一个解决方案,例如抑制以下调用:
public override void Paint()
{
if (algorithmRunning)
{
return; // suppress any further computations
}
base.Paint(); // do actual redraws
}
此代码只是一个示例,您必须根据MSDN文档进行修复
您不应该做的只是挂接到OnPaint()
事件中,因为这样您仍然可以调用实际的Paint()
方法