如何提高Mono中winforms应用程序的性能?

时间:2009-03-05 11:58:39

标签: c# winforms performance mono gtk#

我有一个远程应用程序(2人魔术聚会游戏)在C#中使用Windows窗体,我看到很差 单声道表现。我能想到的一件可能影响性能的是我有按钮背景和表单背景(.png)的自定义图像。此外,我大量使用卡片图像(.jpg)。最后,我非常严格地坚持使用.NET 2.0。

我可以通过什么方式来改善单声道的窗体性能?如果这是不可能的,有一个快速winforms到gtk#转换器或工具,有助于转换?

3 个答案:

答案 0 :(得分:5)

您是否尝试profile your code。也许这会告诉你瓶颈在哪里......

我认为一个大问题是

  

而.Net实现是一个   绑定到Win32工具包,Mono   实现是用C#编写的   允许它在多个平台上工作

如上所述here

  

Mono中的System.Windows.Forms是   使用System.Drawing实现。所有   控件是原生的   System.Drawing中。 System.Windows.Forms的   实现自己的驱动程序接口   与主机OS窗口进行通信   系统

here所述。

我不知道从winforms转换为gtk#...,但是如果你真的想把你的游戏转换为gtk#,那么this可能是一个很好的起点。

答案 1 :(得分:4)

如果您能准确详细说明您正在观察的性能问题,那将非常有用。

Mono的Windows.Forms实现今天有点慢,因为尝试正确地支持嵌入其中的WndProc模型所带来的一些要求。

这是一个可以改进的领域,并且很可能会将Wine的许多课程应用于Mono的Winforms实现。

答案 2 :(得分:2)

您是否尝试过分析它? Mono有一个内置的分析器。 There's a page on the mono website关于单声道分析器和其他性能提示。