Замена OpenFileDialog / SaveFileDialog в .net
-
05-07-2019 - |
Вопрос
В приложении, над которым я работаю, я пытался использовать SaveFileDialog и OpenFileDialog для их обычных целей (сохранение и открытие файлов.)
Однако приложение не может поддерживать модальные формы / диалоги без сбоев, потому что слишком много чувствительных ко времени событий происходит в потоке, который владеет пользовательским интерфейсом.
Переписать приложение, чтобы убрать эти функции из потока, владеющего пользовательским интерфейсом, в ближайшей перспективе нецелесообразно. Чтобы закончить функцию, над которой я работал, мне нужна замена двух файловых диалогов, предпочтительно элемент управления, который может жить в немодальной форме.
Есть ли что-нибудь, что я могу использовать, чтобы не блокировать мой поток, владеющий пользовательским интерфейсом?
Решение
Единственный известный мне вариант - Dialog Workshop.NET , коммерческий продукт. У них есть набор диалогов, которые могут быть немодальными (или встроены непосредственно в форму окна вместо отдельного окна).
Однако я бы действительно подумал о том, чтобы попытаться переместить чувствительную ко времени логику в отдельный поток. Наличие немодального диалога может сбить с толку пользователей, поскольку оно не будет вести себя так, как должно вести себя файловое диалоговое окно. Есть и другие потенциальные последствия для неблокируемого пользовательского интерфейса.
Другие советы
слишком много чувствительных ко времени событий происходит в потоке, которому принадлежит пользовательский интерфейс.
Это твоя настоящая проблема. .Net имеет очень надежную поддержку многопоточности. Я предлагаю вам переместить эти вещи в другое место, хотя это кажется неприятным. Это, вероятно, меньше работы, чем повторная реализация диалогов Open / Save, и определенно будет меньше для вашего приложения в долгосрочной перспективе.