2010-04-26 3 views
1

Это приложение, которое я использую, использует библиотеку классов (если я смею называть это), чтобы выполнить основную часть работы: 2 основных метода там (DoWork and UndoWork) используют другие классы для достижения своей цели. Теперь, когда это работает, я хочу выйти из среды тестирования консоли и сделать графический интерфейс.Получение статуса выполнения из метода библиотеки классов

Как бы получить статус say, метод DoWork(), чтобы обновить индикатор выполнения? Должен ли я многократно обновлять библиотеку классов (которая в настоящее время работает с консолью и Windows.Forms)? Проблема в том, что я, несомненно, должен будет использовать библиотеку классов Window.Forms, которая испортит приложения для тестирования консоли (и их много - я протестировал весь путь, а затем все вместе).

Не могли бы вы предложить некоторые идеи или места, которые я могу прочитать о идеях (весь смысл написания этой программы - узнать, все ли)?

О, кстати, предложения, подобные «предвидению» или «планированию», вероятно, здесь не помогут ... (теперь, anywyay!) - Но, безусловно, в будущих проектах!

ответ

0

Вы должны сделать метод для принятия дополнительного параметра, который реализует интерфейс или делегат для получения отчетов о ходе работы.
Затем вы должны выполнить не-op реализацию интерфейса для консольных приложений и реализацию, которая обновляет элемент управления ProgressBar для WinForms.

1

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

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

+0

+1 - Я думаю, что использование делегата в сочетании с событием было бы лучшим способом справиться с этим в надежной манере – Wayne

Смежные вопросы