如何在重画期间保持winform的响应速度

时间:2012-03-28 06:40:31

标签: winforms

我的计划主要依靠winform。在绘图过程中,winform没有响应。如何让它响应我的鼠标?我想使用另一个线程来绘制winform,但我担心我会遇到臭名昭着的cross-threads-access-conrtrol错误。

4 个答案:

答案 0 :(得分:2)

这是一篇很棒的MSDN文章,可能会对您有所帮助:Give Your .NET-based Application a Fast and Responsive UI with Multiple Thread

当我遇到类似的问题时,它帮助我理解了该怎么做。

另外,您可能需要查看Parallel Programming in .NET Framework 4。本系列还包括一个分布在多个同步线程上的计算策略,所有这些都使用了开箱即用的.NET集合。这并不像听起来那么复杂。试一试吧。 : - )

此外,如果您有机会使用即将推出的.NET增强功能,那么值得尝试Asynchronous Programming with Async and Await

答案 1 :(得分:1)

如果问题是GDI +绘画,你可以在一个单独的线程中在一个单独的位图上完成所有绘图(而不是直接绘制到屏幕上) - 当你完成时:将整个位图复制到表格上。 p>

答案 2 :(得分:0)

您可以使用BackgroundWorker课程来保持您的winform响应。 MSDN

答案 3 :(得分:0)

问题在于你正在执行UI的东西。你必须回到UI线程才能这样做。所有我可以推荐的,是绘制一点,让UI线程处理任何事件,再次画一点。

这可能是最好的方式,但它不容易做...远比在另一个线程中运行非UI作业更容易......