Каков лучший способ автоматизировать приложение WinForms с аргументами командной строки? - PullRequest
0 голосов
/ 07 марта 2012

Я написал небольшой инструмент WinForms с несколькими текстовыми полями, радиокнопками, флажками и кнопкой запуска.Таким образом, вы вводите свои данные, нажимаете «Пуск», и все идет.

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

ВВ прошлом я бы сделал это следующим образом:

  • разобрать аргументы командной строки и заполнить текстовые поля, радиокнопки и флажки в событии Windows.OnLoad
  • Включить таймер в Form.onLoadсобытие срабатывает спустя, возможно, 100 мс
  • Когда таймер срабатывает, отключите таймер и дайте ему нажать на кнопку запуска графического интерфейса.

Это работает, но я хотел бы знать оболее элегантные способы сделать это.Как бы вы решили это?

РЕДАКТИРОВАТЬ: Я хочу всегда показывать форму, поскольку она имеет Backgroundworker с индикатором выполнения.

Ответы [ 3 ]

1 голос
/ 07 марта 2012

Если вы используете шаблоны пользовательского интерфейса, такие как MVP и MVC, вы можете перенести логику пакетного процесса в классы, не основанные на пользовательском интерфейсе. Если вы представляете свою консоль как другой тип пользовательского интерфейса, вы можете построить ее поверх существующей бизнес-логики.

1 голос
/ 07 марта 2012

Звучит так, как будто ваша функция выполняет обработку, считывая данные из формы напрямую. Гораздо понятнее, чтобы эта функция принимала все данные в качестве аргументов, а затем при отправке формы собирала данные и передавала их функции.

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

Нет необходимости в таймерах и вообще не нужно привлекать пользовательский интерфейс для пакета. Как упомянул Treb, для пакетной обработки вы можете даже не отображать форму (или даже вообще не отображать интерфейс)

0 голосов
/ 07 марта 2012

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

Это самый чистый путь.

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

...