【发布时间】:2018-09-23 16:08:34
【问题描述】:
起初,我的 VS2017 创建图像快速流畅。但是当它第二次运行并且具有相同文件名的图像已经存在时,程序每3次暂停bitmap.Save(...)步骤。创建所有 20 个 *.png 文件需要 5.4 秒,但如果目标目录中已经存在所有文件,则需要 41.4 秒。我相信它正在处理文件覆盖。
代码如下:
for (int i = 0; i < 20; i++)
{
Bitmap bitmap = new Bitmap(5000, 5000);
Graphics graphics = Graphics.FromImage(bitmap);
//Draw something here...
bitmap.Save(i.ToString() + ".png", System.Drawing.Imaging.ImageFormat.Png);
Console.WriteLine("Image Saved");
bitmap.Dispose();
graphics.Dispose();
}
奇怪的是,如果我复制代码并将其粘贴到在另一台计算机上创建的新项目上,则不会发生此问题。但是,如果那台计算机运行从我的项目发布的 *.exe 文件,它也会有同样的问题。
它是否与我的 Visual Studio 环境设置的某个地方有关?谢谢!
【问题讨论】:
-
我只是运行您的代码并没有发现任何性能问题。当你说它暂停时,暂停了多长时间
-
定义“非常慢”?您之前尝试过删除文件吗?
-
尝试使用绝对路径,而不是一个相对于 exe 的相对路径,看看是否有区别。
-
@SimonPrice 每 3 个循环暂停 5 秒,正如您所说,它认为不应该有任何性能问题,但它确实发生了。
-
@Sinatr 创建所有 20 个 *.png 文件只需要 5.4 秒,但如果所有文件都已经存在,则需要 41.4 秒。如果我删除所有存在的文件,它会像预期的那样顺利运行,但我仍然很好奇为什么它只发生在我的电脑上。