2013年10月17日 星期四

非同步執行緒寄送郵件

非同步執行緒寄送郵件

C#

#region 非同步執行緒寄送郵件
 
    //1-1.建立非同步委派簽章
    delegate string AsyncSendMail();
    //1-2.建立了一個具有IAsyncResult參數的Callback方法
    void EndCallback(IAsyncResult ar)
    {
        AsyncSendMail asynDelegate = ar.AsyncState as AsyncSendMail;
    }
    //1-3.建立執行主體程式
    string SendMailAsync()
    {
        try
        {
            #region 寄送郵件執行緒-Start
            //宣告執行緒
            System.Diagnostics.Stopwatch sw = new System.Diagnostics.Stopwatch();
            sw.Reset();
            //開始執行緒
            sw.Start();

            //發送郵件
            System.Net.Mail.MailMessage message = new MailMessage();
            SmtpClient smtp = new SmtpClient();
            message.From = new MailAddress(strFrom);
            message.To.Add(new MailAddress(strTo));
            message.SubjectEncoding = System.Text.Encoding.UTF8;
            message.Subject = "Test";
            message.Body = strBody;
            smtp.Host = "192.168.1.1";
            smtp.Port = "25";
            smtp.Send(message);

            //停止執行緒
            sw.Stop();

            #endregion  執行緒-End
            return "successful";
        }
        catch (Exception)
        {
            return "failed";
            //throw;
        }
    }

    protected void Button1_Click(object sender, EventArgs e)
    {

        //1-4.實體化委派
        AsyncSendMail asynDelegate = new AsyncSendMail(SendMailAsync);
        //1-5.開始非同步作業
        asynDelegate.BeginInvoke(EndCallback, asynDelegate);

    }

#endregion 非同步執行緒寄送郵件

沒有留言:

張貼留言