我正在使用Shell32来获取Jpg图像的宽度,高度和分辨率。 我使用GetDetailsOf来获取这些值。这工作得很好而且速度很快,但在我想使用多线程后,我仍然看到1或8个线程的相同性能。
是否有一种线程安全的方法可以从.Net文件对象中获取此信息?
谢谢,Evert-Jan
感谢TamásF,我使用了下一个代码,速度至少快了4倍:
public void GetJpegImageSizeAndRes(string filename, out int width, out int height, out float res)
{
using (var sr = new FileStream(filename, FileMode.Open, FileAccess.Read, FileShare.Read))
{
var sz = Image.FromStream(sr, false, false).Size;
res = Image.FromStream(sr, false, false).HorizontalResolution;
width= sz.Width;
height = sz.Height;
}
}
谢谢大家,Evert-Jan
答案 0 :(得分:1)
我认为你不会提高GetDetailsOf函数调用的性能。当您为多个文件执行此函数或与其他任务并行时,多线程可能会有所帮助。
编辑: 也许PLinq有助于通过使用多线程来改善循环。