Мне нужен счетчик для службы Windows, который будет подсчитывать каждый раз при сбое службы, счет будет включен в электронное письмо, отправленное мне после сбоя. Но как сохранить переменные данные, чтобы перезапуск службы не возвращался к значению по умолчанию. Пробовал OnException и размещение счетчика + = 1 в Сервисном восстановлении
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Microsoft.AspNetCore;
using log4net.Config;
using Topshelf;
using System.Configuration;
namespace PVStuff
{
static class Program
{
static void Main(string[] args)
{
XmlConfigurator.Configure();
int CrashCount = 1;
EMailAdapter emailAp = new EMailAdapter();
string eMailTo, eMailSub;
//email config
eMailTo = ConfigurationManager.AppSettings["PVMailList"];
eMailSub = ConfigurationManager.AppSettings["PVMailSubject"];
var rc = HostFactory.Run(x =>
{
x.Service<PVStuffService>(s =>
{
s.ConstructUsing(nameof => new PVStuffService());
s.WhenStarted(tc => tc.Start());
s.WhenStopped(tc => tc.Stop());
emailAp.SendMessage(eMailTo, eMailSub, "PV Stuff Windows Service crashed unexpectedly. Count: " + CrashCount, false);
});
x.EnableServiceRecovery(r =>
{
r.RestartService(0);
r.OnCrashOnly();
});
x.OnException(t => {
CrashCount += 1;
});
x.RunAsLocalSystem();
x.UseLog4Net();
x.SetDescription("PV Stuff");
x.SetDisplayName("PV Stuff");
x.SetServiceName("PV Stuff");
});
var exitCode = (int)Convert.ChangeType(rc, rc.GetTypeCode());
Environment.ExitCode = exitCode;
}
}
}