Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Etat d'un prog VB.NEt sur un serveur

2 réponses
Avatar
OrangeMecanique
Bjr,

j'ai un programme en VB.Net qui est exécuté sur un serveur. Il tourne en
permanence 24/24h et 7j/7 !!
Quelque fois, il plante (3 fois depuis juillet) et j'aimerais connaitre la
raison. Donc je l'ai mis en version Debug.

Comment puis-je être informé de son plantage ? ou de sa non exécution ?

Merci

Franck

2 réponses

Avatar
Manu
Bonjour,
tu lance ton appli a partir d'une sub main.
Que voici.

Public Sub Main()
Dim frmEncours As frmMain
Dim bReload As Boolean = True
Try
While bReload
frmEncours = New frmMain

Application.Run(frmEncours)
bReload = frmEncours.ReLoad
frmEncours = Nothing
End While
Catch ex As Exception
If MessageBox.Show(ex.Message & vbCrLf & vbCrLf & "Coller l'erreur dans le
bloc notes pour l'envoyer par email à l'auteur ?", "Erreur",
MessageBoxButtons.YesNo, MessageBoxIcon.Exclamation,
MessageBoxDefaultButton.Button2) = DialogResult.Yes Then
Dim iNewProcess As Integer
iNewProcess = Shell("notepad.exe", AppWinStyle.MaximizedFocus)
Clipboard.SetDataObject(ex.ToString, True)
SendKeys.SendWait("+{INSERT}")
End If
End Try
frmEncours = Nothing
System.Windows.Forms.Application.Exit()
End Sub
'---------------------
Explication
Tu met ce code dans un module et tu défini le type de démarrage en SubMain
dans les propriétés de ton appli.
Dans ce code, l'affichage de la premiere fenetre se nomme 'frmMain' mais toi
si tu a une classe en guise de départ ben c'est différent.
Dans la feuille, tu te crée une variable public Boolean 'ReLoad' que tu
passe a True là ou il risque d'y avoir un pepin. Pense a utiliser
Try...Catch c'est fait pour.
Ensuite tu bricole un peu biensur pour ecrire un fichier log a la place du
messagebox.
J'ai pondu ce code pour mes applis et j'ai pas trouvé mieux en plus ça peut
relancer l'appli d'elle meme. i si pas siper vb.net non ?!! ;-)

Manu



"OrangeMecanique" a écrit dans le message de news:
41aaf539$0$18903$
Bjr,

j'ai un programme en VB.Net qui est exécuté sur un serveur. Il tourne en
permanence 24/24h et 7j/7 !!
Quelque fois, il plante (3 fois depuis juillet) et j'aimerais connaitre la
raison. Donc je l'ai mis en version Debug.

Comment puis-je être informé de son plantage ? ou de sa non exécution ?

Merci

Franck




Avatar
Eric Vernié [MS]
Bonjour à tous,
Ce que tu dois faire et c'est ce qu'a commencer a faire Manu, c'est une
gestion globale d'exception
1) Comme le dit manu, tu crées un module Main()
2) par contre, tu t'abonnes à l'évenement ThreadException de l'application
en lui passant en parametre une méthode de rappel

Comme ceci :
Sub Main()
AddHandler Application.ThreadException, AddressOf
GestionnaireDesErreurs
Application.Run(New Form1)
End Sub
Sub GestionnaireDesErreurs(ByVal Sender As Object, ByVal e As
System.Threading.ThreadExceptionEventArgs)
Try
'Tu logues les erreurs ici
catch
'Tu catch ici les erreurs qui pourrais survenir lors du logue (on ne
sait jamais)
end try
end Sub

A+

Eric Vernié




"Manu" a écrit dans le message de news:
41ab6987$0$23066$
Bonjour,
tu lance ton appli a partir d'une sub main.
Que voici.

Public Sub Main()
Dim frmEncours As frmMain
Dim bReload As Boolean = True
Try
While bReload
frmEncours = New frmMain

Application.Run(frmEncours)
bReload = frmEncours.ReLoad
frmEncours = Nothing
End While
Catch ex As Exception
If MessageBox.Show(ex.Message & vbCrLf & vbCrLf & "Coller l'erreur dans le
bloc notes pour l'envoyer par email à l'auteur ?", "Erreur",
MessageBoxButtons.YesNo, MessageBoxIcon.Exclamation,
MessageBoxDefaultButton.Button2) = DialogResult.Yes Then
Dim iNewProcess As Integer
iNewProcess = Shell("notepad.exe", AppWinStyle.MaximizedFocus)
Clipboard.SetDataObject(ex.ToString, True)
SendKeys.SendWait("+{INSERT}")
End If
End Try
frmEncours = Nothing
System.Windows.Forms.Application.Exit()
End Sub
'---------------------
Explication
Tu met ce code dans un module et tu défini le type de démarrage en SubMain
dans les propriétés de ton appli.
Dans ce code, l'affichage de la premiere fenetre se nomme 'frmMain' mais
toi si tu a une classe en guise de départ ben c'est différent.
Dans la feuille, tu te crée une variable public Boolean 'ReLoad' que tu
passe a True là ou il risque d'y avoir un pepin. Pense a utiliser
Try...Catch c'est fait pour.
Ensuite tu bricole un peu biensur pour ecrire un fichier log a la place du
messagebox.
J'ai pondu ce code pour mes applis et j'ai pas trouvé mieux en plus ça
peut relancer l'appli d'elle meme. i si pas siper vb.net non ?!! ;-)

Manu



"OrangeMecanique" a écrit dans le message de news:
41aaf539$0$18903$
Bjr,

j'ai un programme en VB.Net qui est exécuté sur un serveur. Il tourne en
permanence 24/24h et 7j/7 !!
Quelque fois, il plante (3 fois depuis juillet) et j'aimerais connaitre
la
raison. Donc je l'ai mis en version Debug.

Comment puis-je être informé de son plantage ? ou de sa non exécution ?

Merci

Franck