yo Leute,
Habe ein Problem bei einer e-Mail Function.
Ich starte in einem eigenen Thread eine Function welche überprüft ob ein Prozess lauft. Lauft dieser nicht wird er gestartet und es wird ein E-Mail versendet um den Support darüber zu informieren.
Das E-Mail senden ist eine Function einem Modul welche ein E-Mail asyncron versendet (andere Teile des Programms greifen auch auf diese Funktion zu, deshalb asycnron).
Das Problem ist nun (witzigerweise nur in W2k und XP nicht in W7), dass der Thread dann schon beendet ist bevor das Completed Event des Mailsendens greift. (Quasi mittem im Sendevorgang wird abgebrichen).
Somit bekomm ich eine Exception
Spoiler anzeigen
System.Net.Mail.SmtpException: Fehler beim Senden von Mail. ---> System.IO.IOException: Von der Übertragungsverbindung können keine Daten gelesen werden: Eine Anforderung zum Senden oder Empfangen von Daten wurde verhindert, da der Socket nicht verbunden ist und (beim Senden über einen Datagrammsocket mit einem sendto-Aufruf) keine Adresse angegeben wurde. ---> System.Net.Sockets.SocketException: Eine Anforderung zum Senden oder Empfangen von Daten wurde verhindert, da der Socket nicht verbunden ist und (beim Senden über einen Datagrammsocket mit einem sendto-Aufruf) keine Adresse angegeben wurde
bei System.Net.Sockets.Socket.BeginReceive(Byte[] buffer, Int32 offset, Int32 size, SocketFlags socketFlags, AsyncCallback callback, Object state)
bei System.Net.Sockets.NetworkStream.BeginRead(Byte[] buffer, Int32 offset, Int32 size, AsyncCallback callback, Object state)
--- Ende der internen Ausnahmestapelüberwachung ---
bei System.Net.Mail.SmtpConnection.ConnectAndHandshakeAsyncResult.End(IAsyncResult result)
bei System.Net.Mail.SmtpClient.ConnectCallback(IAsyncResult result)
--- Ende der internen Ausnahmestapelüberwachung ---
Starte ich die Funktion ohne eigenem Thread funktioniert es.
Kann ich irgendwie dem Thread sagen er soll gefälligst warten bis er das Mail versendet hat bevor er sich beendet?
lg
Habe ein Problem bei einer e-Mail Function.
Ich starte in einem eigenen Thread eine Function welche überprüft ob ein Prozess lauft. Lauft dieser nicht wird er gestartet und es wird ein E-Mail versendet um den Support darüber zu informieren.
Das E-Mail senden ist eine Function einem Modul welche ein E-Mail asyncron versendet (andere Teile des Programms greifen auch auf diese Funktion zu, deshalb asycnron).
Das Problem ist nun (witzigerweise nur in W2k und XP nicht in W7), dass der Thread dann schon beendet ist bevor das Completed Event des Mailsendens greift. (Quasi mittem im Sendevorgang wird abgebrichen).
Somit bekomm ich eine Exception
System.Net.Mail.SmtpException: Fehler beim Senden von Mail. ---> System.IO.IOException: Von der Übertragungsverbindung können keine Daten gelesen werden: Eine Anforderung zum Senden oder Empfangen von Daten wurde verhindert, da der Socket nicht verbunden ist und (beim Senden über einen Datagrammsocket mit einem sendto-Aufruf) keine Adresse angegeben wurde. ---> System.Net.Sockets.SocketException: Eine Anforderung zum Senden oder Empfangen von Daten wurde verhindert, da der Socket nicht verbunden ist und (beim Senden über einen Datagrammsocket mit einem sendto-Aufruf) keine Adresse angegeben wurde
bei System.Net.Sockets.Socket.BeginReceive(Byte[] buffer, Int32 offset, Int32 size, SocketFlags socketFlags, AsyncCallback callback, Object state)
bei System.Net.Sockets.NetworkStream.BeginRead(Byte[] buffer, Int32 offset, Int32 size, AsyncCallback callback, Object state)
--- Ende der internen Ausnahmestapelüberwachung ---
bei System.Net.Mail.SmtpConnection.ConnectAndHandshakeAsyncResult.End(IAsyncResult result)
bei System.Net.Mail.SmtpClient.ConnectCallback(IAsyncResult result)
--- Ende der internen Ausnahmestapelüberwachung ---
Starte ich die Funktion ohne eigenem Thread funktioniert es.
Kann ich irgendwie dem Thread sagen er soll gefälligst warten bis er das Mail versendet hat bevor er sich beendet?
lg
ScheduleLib 0.0.1.0
Kleine Lib zum Anlaufen von Code zu bestimmten Zeiten
Kleine Lib zum Anlaufen von Code zu bestimmten Zeiten