Ciao, poichè ho alcuni problemi con i primi passi in questa direzione vi allego il codice chiedendovi per cortesia qualche aiuto per capire cos'è che non va:
vorrei creare un servizio (di test ovviamente) che alla partenza controlli se esiste un particolare file, altrimenti lo crei e vi scriva al fondo ogni 10 secondi una riga di testo. Alla fine si stoppi.
Problema: il servizio scrive la prima riga e poi basta.. Se vado in debug scrive qualche riga a caso (me ne salta alcune, forse perchè in debug il comportamento non è lineare?)..
Aiuto
codice:
public partial class Service1 : ServiceBase
{
private int _conta = 0;
private string _percorso = "c:\\temp\\engine.txt"; //+ DateTime.Now.ToShortDateString().Replace("\\","_") + ".txt";
private FileStream fs;
public Service1()
{
InitializeComponent();
}
protected override void OnStart(string[] args)
{
// verifico se il file esiste
FileInfo myCheckFile = new FileInfo(_percorso);
// se esiste lo apro in append altrimenti lo creo
if (myCheckFile.Exists)
fs = new FileStream(_percorso, FileMode.Append, FileAccess.Write);
else
fs = new FileStream(_percorso, FileMode.CreateNew, FileAccess.Write);
}
protected override void OnStop()
{
fs.Close();
}
// scatta ogni 60 secondi (ora 10)
private void timerSchedulazioni_Elapsed(object sender, System.Timers.ElapsedEventArgs e)
{
// aggiorno il contatore
_conta++;
// scrivo il contatore
StreamWriter myWriter = new StreamWriter(fs);
myWriter.WriteLine(System.DateTime.Now.ToShortTimeString() + " - " + _conta);
myWriter.Flush();
// chiudo il writer
myWriter.Close();
if (_conta >= 10)
this.Stop();
}
}