Вопрос

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

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

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

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

Это было полезно?

Решение

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

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

Другие советы

  

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top