Лично я не уверен, что согласен с таким подходом вообще. Отображение модальной формы может вывести вас из этой ситуации, но в большинстве случаев, когда решение кажется трудным найти, полезно изменить проблему, которую вы пытаетесь решить.
Вариант 1:
В этом случае я бы порекомендовал модель оформления заказа / регистрации. Это позволит пользователям «извлекать» файл на свой компьютер, а затем регистрировать его, когда они закончат его обновление. Это имеет ряд преимуществ:
- Они могут редактировать несколько документов одновременно и выполнять операции регистрации сразу для нескольких документов.
- Они могут применять комментарии к регистрации.
- Пользователь может выключить компьютер или выйти из сети и по-прежнему работать с документом.
- Пользователь может оформить несколько документов на месте, а затем забрать работу домой.
- Вам не нужно пытаться понять, что делать, если компьютер выходит из строя (или разряжается батарея ноутбука), когда документ открыт, и как снова собрать все вместе.
Модель также хорошо вписывается в концепцию создания нового документа и добавления его в базу данных. Это то же самое, что и регистрация.
Вы могли бы легко предоставить отчеты, которые показывают, у кого какой документ извлечен, и каково их местоположение "рабочей копии".
Я бы признал, что, как правило, только разработчикам удобна эта модель, и что вам, возможно, придется потратить небольшое количество на переподготовку. Я не думаю, что было бы сложно настроить автоматическую систему напоминаний, которая отправляет электронное письмо людям, когда они давно выписали документ.
Вариант 2:
Смотреть файл, используя FileSystemWatcher или его эквивалент. Это позволит вам следить за файлом, а когда пользователь выполняет операцию сохранения, вы можете зафиксировать базу данных. В конце концов, только если пользователь действительно сохранил файл, который вас интересует при обновлении базы,