WindowsService для ведения логов - C#

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

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

Добрый день.. у меня вот такая проблема я написал сервис который должен писать лог через домустим минуту. вот текст программы:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Diagnostics;
using System.ServiceProcess;
using System.Text;
using System.Windows.Forms;
using System.IO;
namespace WindowsService1
{
public partial class Service1 : ServiceBase
{
public Service1()
{
InitializeComponent();
}
protected override void OnStart(string[] args)
{
}
protected override void OnStop()
{
}
private void timer1_Tick(object sender, EventArgs e)
{
fAddErorTextInLog();
}
public static void fAddErorTextInLog()
{
if (!File.Exists(@"C:ThisError.log"))
{
File.Create(@"C:ThisError.log");
}
StreamWriter ST = new StreamWriter(@"C:ThisError.log", true);
ST.WriteLine(DateTime.Now);
ST.Close();
}
}
}
так вот когда я в VS2005 пошагово запускаю всё нормально работает-пишется лог, а когда уже инсталирую как сервис и запускаю то таймер наотрез отказывается работать и лог не пишеться..... Помогите кто может, я уже не могу решить эту проблему 3 дня, облазил много форумов но

Решение задачи: «WindowsService для ведения логов»

textual
Листинг программы
using System;
using System.ServiceProcess;
using System.IO;
using System.Threading;
namespace WindowsService1
{
    public partial class Service1 : ServiceBase
    {
        Timer myTimer;
        AutoResetEvent autoEvent;
        TimerCallback timerHandler;
        public Service1()
        {
            InitializeComponent();
            autoEvent = new AutoResetEvent(false);
            timerHandler = new TimerCallback(myTimer_tick);
        }
        protected override void OnStart(string[] args)
        {
            myTimer = new Timer(timerHandler, autoEvent, 1000, (10*1000));
        }
        protected override void OnStop()
        {
            myTimer.Dispose();
        }
        private void myTimer_tick(object state)
        {
            fAddErorTextInLog();
        }
        private static void fAddErorTextInLog()
        {
            using (StreamWriter ST = new StreamWriter(@"C:ThisError.log", true))
            {
                ST.WriteLine(DateTime.Now);
            }
        }
    }
}

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


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

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

12   голосов , оценка 4.167 из 5
Похожие ответы