我正在使用Winforms并且需要我的程序启动尽可能快。每毫秒都很重要。
我发现了一个有趣的观察结果。使用资源(Winform的默认添加图像的方式)添加图像来表示按钮时,与添加直线位图相比,加载表单需要大约100毫秒的时间。比较:
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(Form1));
button1.Image = ((System.Drawing.Image)(resources.GetObject("button1.Image")));
以下代码快约100ms(速度增益不适用于其他图像):
button1.Image = new Bitmap("myimage.png");
我想知道为什么前者如此缓慢,如果我能以某种方式加速它?我宁愿使用前者,因为它将图片嵌入到exe中(我不想单独提供所有图像)。
该问题适用于所有允许添加图像的控件(我使用图片框和按钮进行测试)。
答案 0 :(得分:2)
尝试preConstruct System.ComponentModel.ComponentResourceManager资源。 可能额外的100ms用于构造ComponentResourceManager对象