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 ?
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
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
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" <moi@antispam.fr> a écrit dans le message de news:
41aaf539$0$18903$626a14ce@news.free.fr...
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 ?
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
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
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" <awide@free.fr> a écrit dans le message de news:
41ab6987$0$23066$626a14ce@news.free.fr...
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" <moi@antispam.fr> a écrit dans le message de news:
41aaf539$0$18903$626a14ce@news.free.fr...
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 ?
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 ?