У меня есть следующий код:
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 компьютерах, имеющих доступ к одной и той же папке, чтобы забрать файлы, она выдаст исключение, если файл открыт, а затем перейдет к следующему файлу в своем списке.
Когда я открываю приложение на 2 компьютерах одновременно, первый компьютер открывает изображение, а второй - нет. Я показываю сразу 4 изображения на экране, но отладка показывает, что у второго компьютера не хватает 10,5 секунд для открытия 4 файлов, прежде чем он находит тот, который может открыть.
Почему это так дорого и что я могу сделать, чтобы ускорить его?
ОБНОВЛЕНИЕ: Я предоставляю ему эксклюзивный доступ, потому что я хочу, чтобы приложения отображали уникальные изображения, чтобы ПК1 отображал изображения 1,2,3,4, а ПК - 5,6,7,8, потому что он не может получить доступ к 1,2,3,4. Затем я также освобождаю файловый поток, как только с ним покончено, и в последний момент, чтобы другие приложения не пытались его открыть.