Я создал небольшую программу, в которой я могу отправлять электронные письма через SMTP-сервер Yahoo.Мой код:
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("myid@yahoo.com");
message.To.Add("anotherid@yahoo.com");
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") ;
}
}
}
}
Странно то, что он работал в течение первой недели.Я мог бы отправлять сообщения без проблем.Тогда как раз вчера программа просто зависает и не отвечает (я не менял код).Почему это случилось?Как я могу исправить свою программу?
Редактировать: @Andreas Niedermair. Прямо сейчас я только что попробовал программу и оставил ее на целую минуту, после чего появилась ошибка: ContextSwitchDeadlock было обнаружено Сообщение: CLR не удалось перейтиКонтекст COM от 0x21eb78 до контекста 0x21ece8 в течение 60 секунд.Поток, которому принадлежит целевой контекст / квартира, скорее всего, либо делает ожидание без перекачки, либо обрабатывает очень длительную операцию без перекачки сообщений Windows.Эта ситуация, как правило, оказывает негативное влияние на производительность и может даже привести к тому, что приложение перестает отвечать на запросы или использование памяти постоянно увеличивается с течением времени.Чтобы избежать этой проблемы, все потоки однопоточных квартир (STA) должны использовать примитивы перекачки (такие как CoWaitForMultipleHandles) и регулярно перекачивать сообщения во время длительных операций.
Спасибо за вашу помощь!