• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

Knitter

[Resolvido]Dificuldade em identificar um erro num serviço de windows.

2 mensagens neste tópico

Dado o seguinte código de um serviço que criei estou com dificuldades em saber onde está o erro, é complicado estar a fazer debug.

O código compila, o serviço instala correctamente sem qualquer aviso, consigo iniciar e terminar o serviço, bem como desinstalá-lo. No entanto nunca o serviço escreve o ficheiro para o disco. Estou a entrar em parafuso com isto!

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Diagnostics;
using System.ServiceProcess;
using System.Text;
using DataInjector.meteo;
using System.IO;

namespace DataInjector {

partial class DataInjectorService : ServiceBase {

	private const double DEFAULT_QUERY_TIME = 1000;
	private const double DEFAULT_CONFIG_TIME = 1000;

	private System.Timers.Timer configTimer = new System.Timers.Timer(DEFAULT_CONFIG_TIME);
	private System.Timers.Timer queryTimer = new System.Timers.Timer(DEFAULT_QUERY_TIME);

	//private enum DataTypes { /*Temperaturas e afins*/ };

	private Service1 webservice = new Service1();
	private LinkedList<String> nodeURL = new LinkedList<String>();

	/// <summary>
	/// 
	/// </summary>
	public DataInjectorService() {
		InitializeComponent();
		queryTimer.AutoReset = true;
		queryTimer.Elapsed += new System.Timers.ElapsedEventHandler(queryTick);

		configTimer.AutoReset = true;
		configTimer.Elapsed += new System.Timers.ElapsedEventHandler(configTick);
	}

	/// <summary>
	/// 
	/// </summary>
	/// <param name="args"></param>
	protected override void OnStart(string[] args) {
		readConfigurationXml();
		queryTimer.Start();
		configTimer.Start();
	}

	/// <summary>
	/// 
	/// </summary>
	protected override void OnStop() {
		queryTimer.Stop();
		configTimer.Stop();
		// TODO: stop timers, threads, and any other resource
		//Should I abort all running threads or wait for them to finish? Who the hell invented this damn thread system!
	}

	/// <summary>
	/// 
	/// </summary>
	/// <param name="filename"></param>
	/// <returns></returns>
	private bool isValidXml(String filename) {
		return false;
	}

	/// <summary>
	/// 
	/// </summary>
	private void readConfigurationXml() {
		if (isValidXml("")) {
			//TODO: read XML config file
		}
	}

	/// <summary>
	/// 
	/// </summary>
	/// <param name="sender"></param>
	/// <param name="args"></param>
	private void queryTick(Object sender, System.Timers.ElapsedEventArgs args) {
		FileInfo info = new FileInfo(@"c:\service.txt");
		StreamWriter writer = null;

		if(info.Exists) {
			writer = info.AppendText();
		} else {
			writer = info.CreateText();
		}

		writer.WriteLine("tick");
		writer.Flush();
		writer.Close();
	}

	/// <summary>
	/// 
	/// </summary>
	/// <param name="sender"></param>
	/// <param name="args"></param>
	private void configTick(Object sender, System.Timers.ElapsedEventArgs args) {
	}
}
}

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora