MDI даже концептуально не имеет отношение к "tread" |
Позвольте не согласится. Это некая форма мультипоточности, только организованная без Threading.Thread. Вот я ща из ОДНОГО потока(модуля) двадцать форм загружу и каждая будет слушать пользовательский ввод даже после завершения стартующего потока. Это и называется MDI. Другое дело эти же двадцать форм можно запустить каждую в своем потоке system.threading.thread
НО ПО ВНЕШНЕМУ ПОВЕДЕНИЮ ПРИЛОЖЕНИЯ ВЫ ПРАКТИЧЕСКИ НЕ ОПРЕДЕЛИТЕ РАЗНИЦУ (если конечно хватает процессорного времени и обработки прерываются). Это я и называю псевдомультипоточность. Ну термин может и кривой, мною самим выдуманный, но смысл от этого не меняется. По внешнему виду приложения вы не отличите обычное MDI от настоящего мультипоточного приложения.
А зачем ? не могу найти этому практическое применение.
Первое впечатление что то с проектированием приложения не получилось. |
Привожу конкретный пример. В администраторе интернет магазина делается десятки разнообразных задач. Одна проблема - сформировать скажем правильно наценку, вторая - экспортировать итоговый прайс, третья - начислить менеджерам проценты. Всего около семидесяти форм. Некоторые задачи - это цепочки вызовов последовательных форм. Те надо сначала допустим проверить список уволенных менеджеров, а потом только начислять им проценты, потом ЗП. Каждый последующий шаг без итогов предыдущего - абсолютно бессмысленный. Те загрузку последующей формы надо приостанавливать до результата из предыдущей формы. Но зачем же подвешивать ВСЕ приложение. Там ведь решаются еще десятки задач (каждая в своей независимой цепочке форм) - ну например, приходование чего-то на склад. Отчего же это должно подвешиваться из-за того, что идет обработка уволенных менеджеров??? Надеюсь я понятно обьяснился....
Кстати очень интересная тема.У меня тоже такая идея была
вызывать MDI формы в диалоговом режиме. Правда насчет реализации ещё не думал. |
Безусловно. Но я просто пишу всякие сетевые-многопоточные вещи, ну типа, скажем чатов, прокси-серверов и тут меня просто клинит. Не понимаю как все эти механизмы прикрутить к MDI. Но что такое маршалинг в поток формы - понимаю, такое пишу постоянно. Вот ща застрял, как подвешивать некие отдельные цепочки задач, НЕ ПОДВЕШИВАЯ ВСЕ ПРИЛОЖЕНИЕ. Ну и чтобы это не раскрывалось на весь экран, а было чисто MDI-формой. Буду благодарен за правильную подсказку...