c # основной проект и сервис - PullRequest
1 голос
/ 15 мая 2011

Несмотря на мое тщательное поиск в Google, я все еще запутался в этом вопросе.

Позвольте мне объяснить мою ситуацию. Я создал проект c #, который дает пользователю возможность создавать резервные копии базы данных вручную (с помощью нажатия кнопки). Теперь пользователь должен иметь возможность запланировать время, в которое резервное копирование базы данных будет выполняться автоматически. Для достижения этой цели я планирую создать службу, которая запускается через планировщик Windows, когда достигается установленное время резервного копирования.

Мне понадобится развернуть сервис вместе с основным проектом (В моей голове сервис будет другим проектом. Может быть, я здесь не прав.)

Мой вопрос: как мне развернуть сервис, когда пользователь устанавливает основной проект?

PS: я использую c # express и sql 2008 R2 express.

Ответы [ 2 ]

1 голос
/ 15 мая 2011

Что вы используете для установки основного приложения.Скорее всего, у упомянутого упаковочного инструмента также есть крючки, позволяющие вам установить службу.Например, если вы используете Wix для создания MSI-пакета для установки основного приложения, вы можете настроить Wix для установки службы.

Этот поиск в Google укажет вам на соответствующие статьи по этой же теме.

Если вместо этого вы не используете какой-либо инструмент установки, скажем, вы просто даете пользователю почтовый индекс, содержащийВсе исполняемые файлы, то вам нужно будет вручную установить службу. Эта статья идеально подходит для создания самоустанавливающегося сервиса.Вы можете использовать Process.Start для выполнения installutil exe для точной установки / удаления службы.

Edit1: Опираясь на комментарий Рупа к вашему вопросу, у вас уже есть код, необходимый для резервного копирования базы данных.Все, что вам нужно, это иметь возможность планировать это.Как только пользователь вводит расписание в вашем пользовательском интерфейсе, вы можете создать соответствующую задачу в планировщике задач.Пусть эта задача выполнит ваше основное приложение, передав аргумент -backup "dbName" или всю необходимую информацию для запуска ранее упомянутого резервного кода.

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

0 голосов
/ 15 мая 2011

Подход, который я выбрал бы - создать проект для пользовательского интерфейса, создать проект для службы.Служба будет службой Windows, которая всегда будет работать и будет отвечать за создание запланированной задачи.(Вместо того, чтобы запускать запланированную задачу, запустите службу.) То, как вы собираетесь создавать запланированную задачу, достаточно открыто, вы можете выложить AT или сделать какое-нибудь COM-взаимодействие с библиотеками типа TaskScheduler.Надеюсь, это поможет.

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