Замена OpenFileDialog / SaveFileDialog в .net - PullRequest
1 голос
/ 05 мая 2009

В приложении, над которым я работаю, я пытался использовать SaveFileDialog и OpenFileDialog для их обычного назначения (сохранение и открытие файлов.)

Однако приложение не может поддерживать модальные формы / диалоги без сбоев, потому что слишком много чувствительных ко времени событий происходит в потоке, который владеет пользовательским интерфейсом.

Переписать приложение, чтобы убрать эти функции из потока, владеющего пользовательским интерфейсом, в ближайшей перспективе нецелесообразно. Чтобы завершить функцию, над которой я работал, мне нужна замена двух файловых диалогов, предпочтительно элемент управления, который может жить в немодальной форме.

Есть ли что-нибудь, что я могу использовать, чтобы не блокировать мой поток, владеющий пользовательским интерфейсом?

Ответы [ 2 ]

2 голосов
/ 05 мая 2009

слишком много чувствительных ко времени событий происходит в потоке, которому принадлежит пользовательский интерфейс.

Это твоя настоящая проблема. .Net имеет очень надежную поддержку многопоточности. Я предлагаю вам переместить эти вещи в другое место, хотя это кажется неприятным. Это, вероятно, меньше работы, чем повторная реализация диалогов Open / Save, и определенно будет меньше для вашего приложения в долгосрочной перспективе.

1 голос
/ 05 мая 2009

Единственная существующая опция, о которой я знаю, это Dialog Workshop.NET , коммерческий продукт. У них есть набор диалогов, которые могут быть немодальными (или встроены непосредственно в форму окна вместо отдельного окна).

Однако я бы действительно подумал о том, чтобы вместо этого попытаться перенести вашу чувствительную ко времени логику в отдельный поток. Наличие немодального диалога может сбить с толку пользователей, поскольку оно не будет вести себя так, как должно вести себя файловое диалоговое окно. Есть и другие потенциальные последствия для неблокируемого пользовательского интерфейса.

...