Я сделал небольшую программу, в которой я могу в принципе отправить электронное письмо через yahoo smtp-сервер. Мой код:Почему программа Send-Email Freeze?
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") ;
}
}
}
}
Причудливая вещь в том, что она работала в течение первой недели. Я мог отправлять сообщения без проблем. Тогда только вчера программа просто замерзает и не отвечает (я не менял код). Почему это случилось? Как я могу исправить свою программу?
Edit: @Andreas Niedermair Прямо сейчас я просто попробовал программу и оставил ее на целую минуту показала то ошибка: ContextSwitchDeadlock была обнаружен сообщения: Среда CLR не смогло перейти от COM контекста 0x21eb78 к COM контексту 0x21ece8 для 60 секунд. Поток, который владеет целевым контекстом/квартирой, скорее всего, либо выполняет ненакачивание, либо обрабатывает очень длительную операцию без перекачки сообщений Windows. Эта ситуация, как правило, имеет отрицательное влияние на производительность и может даже привести к тому, что приложение становится неактивным или память автоматически накапливается с течением времени. Чтобы избежать этой проблемы, все потоки с одной резьбой (STA) должны использовать примитивы ожидания накачки (например, CoWaitForMultipleHandles) и регулярно накачивать сообщения во время длительных операций.
Благодарим за помощь!
Вы пробовали отлаживать его, чтобы увидеть, где он висит? – Bernard 2010-11-24 17:36:49
, с какой структурой .net вы работаете? – 2010-11-24 18:02:09