Первая ошибка:
if (File.Exists())
Файловая система является нестабильной, поэтому доступ к вашему файлу может меняться между строкой с вашим условием if и следующей строкой. Кроме того, File.Exists () может возвращать значение true, но FileStream все равно может выдать исключение, если у вас нет прав доступа к файлу или он уже заблокирован.
Вместо этого, правильный способ справиться с этим - использовать блок try / catch. Вместо этого посвятите время разработки обработчику исключений, потому что вы все равно должны писать этот код.
Вторая ошибка:
fs.Close();
Эта строка должна находиться внутри блока finally, иначе у вас есть возможность оставить открытые дескрипторы файлов. Обычно я рекомендую блок using
, чтобы обеспечить правильное размещение ресурсов такого типа, но, поскольку вам уже нужен try / catch, вы можете использовать вместо этого код:
Image img = null;
FileStream fs = null;
try
{
fs = new FileStream(photoURI, FileMode.Open, FileAccess.Read);
img = Image.FromStream(fs);
}
finally
{
fs.Close();
}