public Service1()
{
// This call is required by the Windows.Forms Component Designer.
InitializeComponent();
}
// The main entry point for the process
static void Main()
{
System.ServiceProcess.ServiceBase[] ServicesToRun;
// More than one user Service may run within the same process. To add
// another service to this process, change the following line to
// create a second service object. For example,
//
// ServicesToRun = new System.ServiceProcess.ServiceBase[] {new Service1(), new MySecondUserService()};
//
ServicesToRun = new System.ServiceProcess.ServiceBase[] { new Service1() };
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InitializeComponent()
{
this.components = new System.ComponentModel.Container();
this.SaveTimer = new System.Timers.Timer(100);
//
// SaveTimer
//
this.SaveTimer.Elapsed += new System.Timers.ElapsedEventHandler(this.SaveTimer_Tick);
//
// test timer service
//
this.ServiceName = "Test Timer Service";
}
/// <summary>
/// Clean up any resources being used.
/// </summary>
protected override void Dispose( bool disposing )
{
if( disposing )
{
if (components != null)
{
components.Dispose();
}
}
base.Dispose( disposing );
}
/// <summary>
/// Set things in motion so your service can do its work.
/// </summary>
protected override void OnStart(string[] args)
{
SaveTimer.Enabled = true;
}
/// <summary>
/// Stop this service.
/// </summary>
protected override void OnStop()
{
}
private void SaveTimer_Tick(object sender,System.Timers.ElapsedEventArgs e)
{
// Do something here
}
}
}
Ton Timer ne réagit pas pour une bonne raison:
Le Control Timer ne crée pas de Thread pour s'exécuter, il utilise le Thread en cours.
Or, un service en .NET lors que tu cliques sur "Démarrer", lance la méthode OnStart dans un Thread (le premier) puis à la fin de cette méthode, ce Thread se termine. Et don ton Timer aussi.
Pour remédier à ce souci, il te faut créer un Thread d'exécution pour ton service dans la méthode OnStart, et ce sera ce Thread qui exécutera le corps de ton service. D'autre part, il s'agit de la méthode la plus correcte de développer un service en .NET.
C'est quasiment le code de base généré par VS.NET quand tu crée un nouveau service en c#. Pour avoir la version VB tu crées un nouveau service dans les projets VB ....
Hmm tu est bien gentil TheSaib, mais je connais rien au CSharp. Mais effectivement c'est bien pour un service VB, mon pb c'est que j'ai un timer qui n'est pas pris en charge, c'est à dire il ne se lance jamais.
As-tu une solution ?