双缓冲本来就不能加快动画的绘制,相反,它会使动画的绘制更慢。
之所以使用双缓冲,是因为我们不想把绘制的过程直接显示在屏幕上,引起闪烁,同时需要减少在真实屏幕上绘制的时间。所以,如果不加限制的使用多线程,双缓冲的优势就不存在了——除掉线程本身的性能损耗不谈,在逻辑,你的copy线程(memGraph -> g)有可能在绘制线程(memGraph.DrawImage...)工作进行到一半的时候进行copy工作,导致绘制的过程直接被显示在了屏幕上;加上线程切换和资源问题,结果是比不用双缓冲更糟糕。如果一定要使用多线程,就必须保证copy线程在绘制线程结束一次绘制工作之后再开始copy,而绘制线程必须等到copy工作结束以后再绘制下一副,这些可以用lock实现。
但是,既然整个过程是顺序的,又何必非要多线程呢?