Windows Service. Timer не срабатывает - C#

Узнай цену своей работы

Формулировка задачи:

День добрый. Извините, если не в тот раздел пишу... Проблема в следующем: Решил написать простенькую службу в VS 2010 (До этого писал в Delphi), которая подключается к VPN и складывает ip на удалённый комп в txt, также она периодически повторяет процедуру, ибо частенько происходят обрывы. В службе не запускается Timer. Если писать Windows Forms Application, то всё работает, а в службе таймер не срабатывает.
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Diagnostics;
using System.Linq;
using System.Net;
using System.ServiceProcess;
using System.Text;
 
namespace VpnConnectorService
{
    public partial class VpnConnector : ServiceBase
    {
        public VpnConnector()
        {
            InitializeComponent();
        }
 
        protected override void OnStart(string[] args)
        {
            Process.Start("cmd", @"/k rasdial xxx yyy zzz /Domain:AA & exit"); //подключение VPN-соединения
            System.Threading.Thread.Sleep(15000); //задержка            
            String host = Dns.GetHostName();     //получение имени компьютера
            IPAddress ip = Dns.GetHostByName(host).AddressList[0];    //получение ip-адреса компьютера
            System.IO.File.WriteAllText(@"\\xxx\C$\Users\yyy\Desktop\IP-Home.txt", ip.ToString()); //создание/перезапись файла с ip-адресом
            timer1.Enabled = true;
        }
 
        protected override void OnStop()
        {
            timer1.Enabled = false;
        }
 
        private void timer1_Tick(object sender, EventArgs e)
        {
            Process.Start("cmd", @"/k rasdial xxx yyy zzz /Domain:AA & exit"); //подключение VPN-соединения
            System.Threading.Thread.Sleep(15000); //задержка
            String host = Dns.GetHostName();     //получение имени компьютера
            IPAddress ip = Dns.GetHostByName(host).AddressList[0];    //получение ip-адреса компьютера
            System.IO.File.AppendAllText(@"\\xxx\C$\Users\yyy\Desktop\IP-Home.txt", ip.ToString()); //создание/дополнение файла с ip-адресом
        }
    }
}
Заранее благодарю.

Решение задачи: «Windows Service. Timer не срабатывает»

textual
Листинг программы
protected override void OnStart(string[] args)
        {
            Process.Start("cmd", @"/k rasdial xxx yyy zzz /Domain:AA & exit"); //подключение VPN-соединения
            System.Threading.Thread.Sleep(15000); //задержка            
            String host = Dns.GetHostName();     //получение имени компьютера
            IPAddress ip = Dns.GetHostByName(host).AddressList[0];    //получение ip-адреса компьютера
            System.IO.File.WriteAllText(@"\\xxx\C$\Users\yyy\Desktop\IP-Home.txt", ip.ToString()); //создание/перезапись файла с ip-адресом
            timer1.Enabled = true;
            timer1.Intrerval = 1000;
            timer1.Start();
}

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

7   голосов , оценка 3.714 из 5