我有以下代码:为什么File.Open如此昂贵?
try
{
string fileName = imageQueue.Dequeue();
FileStream fileStream = File.Open(
fileName, FileMode.Open, FileAccess.ReadWrite, FileShare.None);
Bitmap bitmap = new Bitmap(fileStream);
Image picture = (Image)bitmap;
pb.Tag = fileName;
pb.Image = picture;
return true;
}
catch (Exception ex)
{
errorCount++;
//If another PC has this image open it will error
return false;
}
因为这个计划是在2 PC的运行访问同一个文件夹来接档涨它就会抛出一个异常,当一个人有一个文件打开,然后移动到的下一个文件它的名单。
当我在2台PC上同时打开应用程序时,第一台个人电脑设法打开图像,但第二台设备没有打开图像。我在屏幕上一次显示4张图像,但做一些调试显示,第二台PC在打开4个文件之前需要10.5秒才能失败,然后才能找到可打开的文件。
为什么这么贵,我能做些什么来加快速度?
更新:我给它独占访问,因为我希望应用程序显示独特的图像,所以PC1显示图像1,2,3,4和PC显示5,6,7,8,因为它无法获得acccess到1 ,2,3,4。我还会在完成之后释放文件流并在最后时刻释放文件流,以防止其他应用程序尝试打开它。
你需要有读写权限打开的文件?如果不考虑让他们读取访问权限,然后将FileShare枚举更改为使用Read。 http://msdn.microsoft.com/en-us/library/system.io.fileshare.aspx – 2011-06-16 12:19:53
另外,考虑包装FileStream fileStream = File.Open(fileName,FileMode.Open,FileAccess.ReadWrite,FileShare.None) ;是一个using(){}块,以便在完成后立即释放资源。 – 2011-06-16 12:20:56
2.6秒在打开锁定文件时失败过多。这必须是环保的。很难猜到可能是什么。 – 2011-06-16 12:50:35