La méthode Debugger.Launch est un bon moyen, mais je préfère créer une classe qui fait le traitement et l'appeler depuis le service, ce qui peut aussi être appelé depuis une application win forms. Par exemple :
class ProcessingManager
{
public void Start()
{
//do processing
}
public void Stop()
{
//stop
}
}
ensuite, dans votre service / application win forms, créez simplement une instance de la classe de traitement comme variable membre et appelez la méthode au démarrage et à l'arrêt. Cela peut être utilisé dans le service, ou dans une application win forms avec un bouton de démarrage et d'arrêt, ce que je trouve beaucoup plus rapide que d'attacher le débogueur à chaque fois parce que vous pouvez configurer l'application Windows pour qu'elle démarre par défaut et ajouter des points d'arrêt dans le gestionnaire de traitement.
extrait du code de service :
namespace Service
{
public partial class Service : ServiceBase
{
#region Members
private ProcessingManager m_ProcessingManager = null;
#endregion Members
#region Constructor
/// <summary>
/// Constructor
/// </summary>
public Service()
{
InitializeComponent();
try
{
//Instantiate the processing manager
m_ProcessingManager = new ProcessingManager();
}
catch (Exception ex)
{
ErrorHandler.LogError(ex);
}
}
#endregion Constructor
#region Events
/// <summary>
/// Starts the processing
/// </summary>
/// <param name="args">Parameters</param>
protected override void OnStart(string[] args)
{
try
{
//Start the Processing
m_ProcessingManager.Start();
}
catch (Exception ex)
{
ErrorHandler.LogError(ex);
}
}
/// <summary>
/// Service Stopped
/// </summary>
protected override void OnStop()
{
try
{
//Stop Processing
m_ProcessingManager.Stop();
}
catch (Exception ex)
{
ErrorHandler.LogError(ex);
}
}
#endregion Events
}
}