我处理大型C#应用程序(大约450,000行代码),我们经常遇到桌面堆和GDI处理泄漏的问题。 WPF解决了这些问题,但我不知道升级的最佳方式是什么(我希望这需要很长时间)。应用程序只有几种形式,但这些形式可以包含许多不同的用户控件集,这些用户控件是以编程方式确定的。

这是一个内部公司应用程序,因此我们的发布周期非常短(通常为3周发布周期)。

是否有一些渐进的升级路径,或者我们是否必须付出巨大努力?

有帮助吗?

解决方案

您可以从创建WPF主机开始。

然后你可以使用<!> lt; WindowsFormHost / <!> gt;控制托管您当前的应用程序。然后,我建议在WPF中创建一个新控件的库。一次一个,您可以创建控件(我建议将它们设置为自定义控件,而不是用户控件)。在每个控件的样式中,您可以先使用<!> lt; ElementHost / <!> gt;控制包括<!> quot; old <!> quot;窗体控制。然后,您可以花时间重构并重新创建每个控件作为完整的WPF。

我认为仍然需要初步努力来创建控件包装器并为应用程序设计WPF主机。我不确定应用程序的大小和用户控件的复杂程度,所以我不确定会给你多少努力。相对而言,以这种方式在WPF中启动和运行应用程序的工作量要少得多,速度也快得多。

我不会那样做而忘记它,因为你可能会遇到控件相互叠加的问题(Windows窗体与WPF不兼容,尤其是透明胶片和其他视觉效果)

如果您需要更具体的指导,请向我们提供有关此项目状态的最新信息,或提供更多技术信息。谢谢:))

其他提示

你是否对这些作品使用了很多用户控件? WPF可以托管winform控件,因此您可以将部分分段引入主窗体。

WPF允许您将Windows窗体用户控件嵌入到WPF应用程序中,这可以帮助您以较小的步骤进行转换。

查看 WindowsFormsHost < WPF文档中的/ a>类。

有一篇关于将.NET 2.0 winform应用程序迁移到WPF的非常有趣的白皮书,请参阅向.NET 3.5应用程序发展

论文摘要: 在本文中,我将概述在将.NET应用程序从1.x / 2.x发展为3.x时必须面对的一些思考过程,决策和问题。 。我<!>#8217;看看我们如何帮助我们的客户采用新技术,但仍保持业务可接受的发布时间表。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top