2009-10-02 2 views
1

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

Это приложение для VB.NET. Вместо того, чтобы разрабатываться как служба или бесформенное приложение Windows, он был разработан с формой, и весь код был помещен в логику form_load с инструкцией «END» в качестве последней строки кода для завершения программы.

Помимо создания программы, в которой используются ненужные ресурсы форм Windows, есть ли веская причина для отправки этого кода для переделки, которая должна быть изменена, чтобы поместить логику запуска в MAIN sub файла BAS?

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

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

Я помню, что раньше было что-то в VB6, где вы могли проверить приложение как работающее без присмотра, по-видимому, чтобы избежать диалогов.

ответ

4

Я не знаю, существуют ли условия, когда это не будет работать.

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

1

Если вы не хотите, чтобы это была услуга, ничего не говорится о том, что она должна быть службой Windows. Планирование его для запуска через планировщик заданий или что-то подобное является допустимым вариантом.

Однако, похоже, разработчик должен был выбрать проект «Консольное приложение» вместо проекта «Windows Forms» для создания этого приложения.

2

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

Если вы не хотите, чтобы конвертировать приложение в сервис (не сложно, но не очень просто), вы создаете консольное приложение, а затем планируете его с помощью планировщика задач Windows.

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

В любом случае программист может отображать окна, поэтому не должно быть никаких сообщений. Любое сообщение должно быть выполнено через Logging to: локальные файлы, события Windows, базу данных.

Если вы хотите получить дополнительную информацию по любому из них, спросите меня.

+0

По какой причине вы предлагаете изменить его на консольное приложение? кроме того, что у них меньше накладных расходов, это также отрицает возможность отображения диалогового окна - проблемы, связанной с приложением WinForm? Изменение его на консольное приложение также было инстинктом кишки, который я рассматривал. – ChadD

+0

Прежде всего, приложение будет проще, меньше кода. Нет «событий». Не больше логики, которую нужно реализовать. Во-вторых, вы также должны удалить любые Импорты в любое пространство имен, которое вы не собираетесь использовать, например, Forms.Windows. Если бы я должен был выполнить ваше приложение, я сделал бы это как Сервис, и я планировал бы процессы внутри, используя Quartz.NET (http://quartznet.sourceforge.net/). Я бы выполнил ведение журнала с помощью Log4NET (http: //logging.apache.org/log4net/index.html) Конечно, все это зависит от требований. О чем ваше заявление? Что оно делает? База данных? –

0

Отправить его обратно. Приложение является более громоздким и медленнее, чем должно быть, хотя это не будет проблемой. У него скорее всего будет нехватка ресурсов. Но главная причина: конвертировать его в консольное приложение очень просто.

0

Если вы не хотите, чтобы окно консоли отображалось, просто выполните следующее.

Создайте новый класс «Program.vb», добавьте общедоступный общий метод Main() и переместите логику «OnLoad» из формы в этот метод.

Затем удалите форму и измените объект запуска проекта (доступно в окне свойств проекта), чтобы использовать Program.Main вместо формы.

Это будет иметь тот же эффект, без использования ресурсов форм Windows. Затем вы можете удалить ссылки на System.Windows.Form и System.Drawing.