Первая служба Windows - таймер, кажется, не тикает - PullRequest
3 голосов
/ 26 ноября 2009

Я написал свой первый Windows-сервис.

  1. Создать проект WS
  2. Переименовать Сервис
  3. Перетащите таймер в середину
  4. Включить, отметьте 1с
  5. Создать logfie в тике, когда не существует
  6. Установка службы
  7. Запустить службу

Ничего не происходит ...

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

Есть идеи?


Таймер кода:

private void timMain_Tick(object sender, EventArgs e)
{
    if (!File.Exists("C:/test.txt"))
    File.Create("C:/test.txt");
}

Код инициализации:

private void InitializeComponent()
{
    this.components = new System.ComponentModel.Container();
    this.timMain = new System.Windows.Forms.Timer(this.components);
    // 
    // timMain
    // 
    this.timMain.Enabled = true;
    this.timMain.Interval = 1000;
    this.timMain.Tick += new System.EventHandler(this.timMain_Tick);
    // 
    // AuctionService
    // 
    this.CanShutdown = true;
    this.ServiceName = "AuctionService";

}

Одно слово: File.Create предназначен только для проверки, установлен ли таймер. Из-за этого я был немного невоспитанным =)

Ответы [ 2 ]

12 голосов
/ 26 ноября 2009

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

Я рекомендую вам использовать System.Threading.Timer вместо этого, поскольку он не требует пользовательского интерфейса и более подходит для использования в службе:

Timer t = new Timer(t_Tick, null, 0, 1000);

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

3 голосов
/ 26 ноября 2009

Как вы «запускаете сервис»? Вы должны запустить сервис через менеджера сервиса. Запуск его от VS не делает этого. Если вы хотите отладить его, вам все равно нужно запустить его через диспетчер служб, а затем подключить отладчик, когда он уже работает

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