DevTrain Startseite SharePoint Camp ? In 5 Tagen zum SharePoint Profi!  
  
  
SUCHEN:  
ARTIKEL ONLINE: 525   

Kategorien
.NET
Datenbanken
Web
XML

Allgemein
Camp
Foren
Events
Persönliche Einstellungen
Registrieren
Prämien Shop
Kontakt
Impressum
Über DevTrain

Autoren



 

Forum: ASP.NET | Thema: Re: ASP.net als Windows-Dienst "missbrauchen"? | Von: Klaus Holster ( 12.01.2005 14:11)

Hallo Thomas,

wenn im Thread eine Exception auftritt, dann wird die Methode beendet, falls die Exception nicht behandelt wird. Dazu muss in den Eventhandlern jeweils ein Try..Catch eingebaut werden, etwa so:

Public Class CustomMailHandler
Public Sub myWatcherEMailOnCreated(ByVal sender As Object, ByVal e As FileSystemEventArgs)
Try
' File created hier behandeln
Catch ex As Exception
' Fehler hier behandeln
End Try
End Sub
Public Sub myWatcherEMailOnRenamed(ByVal sender As Object, ByVal e As RenamedEventArgs)
Try
' File renamed hier behandeln
Catch ex As Exception
' Fehler hier behandeln
End Try
End Sub
End Class

Die Thread-Methodes kann dann etwa so aussehen:

Public Shared Sub EMailUeberwachenVersand()

Dim myWatcher As New FileSystemWatcher
Dim myMailHandler As New CustomMailHandler

AddHandler myWatcher.Created, AddressOf myMailHandler.myWatcherEMailOnCreated
AddHandler myWatcher.Renamed, AddressOf myMailHandler.myWatcherEMailOnRenamed

' Begin watching.
myWatcher.EnableRaisingEvents = True

Do
System.Threading.Thread.CurrentThread.Sleep(1000)
Loop
End Sub


Bloss, der Thread ist überflüssig, weil die Aktion ja vom FileSystemWatcher ausgelöst wird und der sowieso im Hintergrund aktiv ist. Er braucht keinen eigenen Thread, sondern nur Handlermethoden, die man auch direkt in der Global.asax unterbringen kann.

Übrigens hat der von mir gepostete Beispielcode noch eine kleine Macke: fsw und Handler sollte als shared dekariert werden. Die richtige Version sieht so aus:

Private Shared fsw As New FileSystemWatcher

Private Shared Sub OnChanged(ByVal source As Object, ByVal e As FileSystemEventArgs)
Dim SMTPMessage As System.Web.Mail.MailMessage = New System.Web.Mail.MailMessage
SMTPMessage.From = "nn@hier.die"
SMTPMessage.To = "nn@da.de"
SMTPMessage.Subject = "fsw change"
SMTPMessage.Body = e.FullPath + " / " + e.ChangeType.ToString
SMTPMessage.BodyEncoding = System.Text.Encoding.UTF8
System.Web.Mail.SmtpMail.SmtpServer = "127.0.0.1"
System.Web.Mail.SmtpMail.Send(SMTPMessage)
End Sub

Sub Application_Start(ByVal sender As Object, ByVal e As EventArgs)
fsw.Path = "c:\fsw\"
fsw.EnableRaisingEvents = True
AddHandler fsw.Changed, AddressOf OnChanged
End Sub

Try/Catch im Handler habe ich weggelassen, so dass Fehler im Standard-Fehlerhandler Application_Error behandelt werden (können).

Hth,

Klaus


Betreff Von Datum
Re: ASP.net als Windows-Dienst "missbrauchen"?
OK, vielen Dank
G. Guest 12.01.2005 14:21
Re: ASP.net als Windows-Dienst "missbrauchen"?
OK, vielen Dank
Thomas Grupp 12.01.2005 14:21

Antworten
Vorsicht bei der Eingabe: Die Zeichen ' oder -- sind nicht erlaubt!

 Betreff:
 Nachricht: Den Beitrag finden Sie nun unter: http://beta.devtrain.de/foren Die Benutzerdaten und Foreninhalte von beta.devtrain.de und www.devtrain.de sind die selben.
Sie können sich dort sogar per RSS über neue Inhalte informieren lassen.
Bei Problemen bitte direkt Mail an asp [AT] ppedv.de.

 Signatur:

  



Login
Username:


Passwort:






Passwort vergessen?

Building und Connecting Know-how

© Copyright 2003 ppedv AG