Zarządzanie zablokowanymi zasobami (plikami obrazów)

Aplikacja jest systemem zarządzania dokumentami na pulpicie. Pliki obrazów (zeskanowanych dokumentów) są przechowywane w udostępnionym folderze sieciowym i jego indeksach w bazie danych. Teraz, gdy wyświetlany jest obraz wybranej strony dokumentu, użytkownik ma możliwość jej usunięcia (poprzez menu kontekstowe). Problem polega na tym, że jeśli spróbuję to zrobić, to zgłasza wyjątek (zasób jest zablokowany), co ma sens, ponieważ jest wyświetlane na ekranie. Obecnie utrzymuję trwałą kolejkę usuwania. Po uruchomieniu aplikacji przechodzę do kolejki i usuwam strony dokumentów, których indeksy zostały usunięte z bazy danych i biorąc pod uwagę, że nie są wyświetlane, usunięcie powiodło się, ale wydaje się, że jest to bardzo zły kod (mam na myśli, że działa, ale nie chyba tak czyste, jak powinno.

Jak złe jest moje szybkie rozwiązanie. Biorąc pod uwagę, że aplikacja jest jednym użytkownikiem, użytkownik musi ją oznaczyć gwiazdką, aby z niej korzystać. Czy to bardzo zły pomysł lub czy mogę go zaimplementować przy użyciu innej ścieżki.

Obrazy są wyświetlane (w przeglądarce dokumentów), wiążąc je z bieżącym plikiem:

Widok:

<Image Name="PageViewedPath" Margin="20" Grid.Column="0" />

ViewModel:

public string PageViewedPath { get; set; }

A gdy użytkownik kliknie następną lub poprzednią zmianę (w ViewModel PageViewedPath). Być może problemem jest to wiązanie, którego nie mogę szczegółowo kontrolować, używam Caliburn Micro, dlatego właśnie po ustawieniu nazwy obrazu wiązanie jest wykonywane.

Myślę, że nadpisanie tego powiązania i stworzenie kopii obrazu przed jego pokazaniem musi zadziałać, ale nie jestem pewien, czy i jak będzie gorzej.

questionAnswers(2)

yourAnswerToTheQuestion