Ich habe ein kleines Programm, in dem ich grundsätzlich eine E-Mail über den Yahoo SMTP Server senden kann. Mein Code:Warum wird das Sende-E-Mail-Programm eingefroren?
using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Net;
using System.Net.Mail;
using System.Drawing;
using System.IO;
using System.Text;
using System.Windows.Forms;
namespace WindowsFormsApplication1
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
try
{
MailMessage message = new MailMessage();
message.From = new MailAddress("[email protected]");
message.To.Add("[email protected]");
message.Subject = "afdasdfasfg";
message.Body = "Hgfk4564267862738I";
message.IsBodyHtml = true;
message.Priority = MailPriority.High;
SmtpClient sC = new SmtpClient("smtp.mail.yahoo.com");
sC.Port = 587;
sC.Credentials = new NetworkCredential("myid", "mypassword");
//sC.EnableSsl = true;
sC.Send(message);
MessageBox .Show ("Mail Send Successfully");
}
catch (Exception ex)
{
MessageBox .Show (ex + "Mail Sending Fail's") ;
}
}
}
}
Die seltsame Sache ist, dass es für die erste Woche funktionierte. Ich könnte Nachrichten ohne Probleme senden. Erst gestern fängt das Programm einfach an zu frieren und antwortet nicht (ich habe den Code nicht geändert). Warum ist das passiert? Wie kann ich mein Programm verbessern?
Edit: @Andreas Niedermair Gerade jetzt habe ich versucht, einfach das Programm und ließ es für eine ganze Minute dann ein Fehler zeigte: ContextSwitchDeadlock erkannt wurde Nachricht: Die CLR ist es nicht gelungen von COM Kontext für den Übergang 0x21eb78 zu COM Kontext 0x21ece8 für 60 Sekunden. Der Thread, der den Zielkontext/das Zielobjekt besitzt, führt höchstwahrscheinlich entweder eine nicht pumpende Wartezeit durch oder verarbeitet eine sehr lange laufende Operation, ohne Windows-Nachrichten zu pumpen. Diese Situation wirkt sich im Allgemeinen negativ auf die Leistung aus und kann sogar dazu führen, dass die Anwendung nicht mehr reagiert oder sich die Speicherbelegung im Laufe der Zeit ständig erhöht. Um dieses Problem zu vermeiden, sollten alle STA-Threads (single threaded apartments) Pump-Warte-Primitive (wie CoWaitForMultipleHandles) verwenden und während langer Betriebsvorgänge routinemäßig Nachrichten pumpen.
Danke für Ihre Hilfe!
Haben Sie versucht, es zu debuggen, um zu sehen, wo es hängt? – Bernard
mit welchem .net Framework arbeiten Sie? –