Salut,
J'essaie de créer mon tout premier service windows. Je m'inspire donc du tutoriel et de cette discussion qui s'en est inspirée, mais je n'arrive à rien.
Je soupçonne une mauvaise utilisation du timer. J'ai vu ici et là comme réponse "utilise un de ces timers System.Timers.Timer ou System.Threads.Timer plutôt que System.Windows.Forms.Timer".
mais bon, le tuto utilise le windows.forms, le fil dont je m'inspire aussi, le glisser/déposer le propose. Donc avant tout autre changement je souhaiterais que ça fonctionne avec System.Windows.Forms.Timer.
Pour que vous m'aidiez, je n'aime pas trop ça et j'en suis désolé, je n'ai pas d'autre choix que de poster le code complet. Code qui n'est pas non plus conséquent tout de même.
SMemoire.vb :SMemoire.Designer.vb :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41 Imports System.Net.Mail Public Class SMemoire Protected Overrides Sub OnStart(ByVal args() As String) ' Ajoutez ici le code pour démarrer votre service. Cette méthode doit ' démarrer votre service. EventLog1.WriteEntry("Démarrage du service") Timer2.Enabled = True End Sub Protected Overrides Sub OnStop() ' Ajoutez ici le code pour effectuer les destructions nécessaires à l'arrêt de votre service. EventLog1.WriteEntry("Arrêt du service") Timer2.Enabled = False End Sub Private Sub Timer2_Tick(ByVal sender As Object, ByVal e As System.EventArgs) Handles Timer2.Tick Dim smtp As SmtpClient = New SmtpClient Dim message As MailMessage = New MailMessage smtp.Host = "smtp.smtp.com" message.To.Clear() message.To.Add("f@c.com") message.From = New MailAddress("f@c.com") message.Subject = "Service Windows" message.Body = "Je teste le service Windows" smtp.Send(message) Timer2.Stop() EventLog1.WriteEntry("Email envoyé%") End Sub Public Sub New() ' Cet appel est requis par le Concepteur Windows Form. InitializeComponent() Timer2.Interval = 60000 Timer2.Start() End Sub End ClassVoyez-vous ce que je fais de mal?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64 Imports System.ServiceProcess <Global.Microsoft.VisualBasic.CompilerServices.DesignerGenerated()> _ Partial Class SMemoire Inherits System.ServiceProcess.ServiceBase 'UserService remplace la méthode Dispose pour nettoyer la liste des composants. <System.Diagnostics.DebuggerNonUserCode()> _ Protected Overrides Sub Dispose(ByVal disposing As Boolean) Try If disposing AndAlso components IsNot Nothing Then components.Dispose() End If Finally MyBase.Dispose(disposing) End Try End Sub ' Point d'entrée principal du processus <MTAThread()> _ <System.Diagnostics.DebuggerNonUserCode()> _ Shared Sub Main() Dim ServicesToRun() As System.ServiceProcess.ServiceBase ' Plusieurs services NT s'exécutent dans le même processus. Pour ajouter ' un autre service à ce processus, modifiez la ligne suivante ' pour créer un second objet service. Par exemple, ' ' ServicesToRun = New System.ServiceProcess.ServiceBase () {New Service1, New MySecondUserService} ' ServicesToRun = New System.ServiceProcess.ServiceBase() {New SMemoire} System.ServiceProcess.ServiceBase.Run(ServicesToRun) End Sub 'Requise par le Concepteur de composants Private components As System.ComponentModel.IContainer ' REMARQUE : la procédure suivante est requise par le Concepteur de composants ' Elle peut être modifiée à l'aide du Concepteur de composants. ' Ne la modifiez pas à l'aide de l'éditeur de code. <System.Diagnostics.DebuggerStepThrough()> _ Private Sub InitializeComponent() Me.components = New System.ComponentModel.Container Me.EventLog1 = New System.Diagnostics.EventLog Me.Timer2 = New System.Windows.Forms.Timer(Me.components) CType(Me.EventLog1, System.ComponentModel.ISupportInitialize).BeginInit() ' 'EventLog1 ' Me.EventLog1.Log = "JournalMemoire" Me.EventLog1.Source = "ServiceMemoire" ' 'SMemoire ' Me.ServiceName = "SMemoire" CType(Me.EventLog1, System.ComponentModel.ISupportInitialize).EndInit() End Sub Friend WithEvents EventLog1 As System.Diagnostics.EventLog Friend WithEvents Timer2 As System.Windows.Forms.Timer End Class
Merci par avance.
Partager