多线程有那么基本特性?如何用多线程来做邮件的收发?

解决方案 »

  1.   

    public void SendAsync() { Thread thSendMail = new Thread(new ParameterizedThreadStart(this.SendAsyncProcess)); thSendMail.Start() thSendMail.Join(); } private void SendAsyncProcess() { SqlDataport sp = new SqlDataport(); string sql = "select top 10 * from tbl_sendmailList"; DataTable dt == sp.getTableResult(sql); if(dt==null || dt.Rows.Count==0) return ; while(dt.Rows.Count>0) { MailModel[] mailList = new MailModel[dt.Rows.Count]; for (int i = 0; i < dt.Rows.Count; i++) { MailModel mm = new MailModel(); mm.Body = dt.Rows[i]["body"].ToString(); mm.Subject = dt.Rows[i]["subject"].ToString(); mm.ToEmail = dt.Rows[i]["toemail"].ToString(); mm.IsBodyHtml = true; mailList[i] = mm; } MailMessage m; SmtpClient objClient = GetSmtpClientInst(); for (int i = 0; i < mailList.Length; i++) { m = new MailMessage(); m.Subject = listInfo[i].Subject; m.SubjectEncoding = Encoding.UTF8; m.From = new MailAddress(this._fromEmail, this._displayName); m.To.Add(listInfo[i].ToEmail); m.Body = listInfo[i].Body; m.IsBodyHtml = listInfo[i].IsBodyHtml; m.BodyEncoding = Encoding.UTF8; objClient.Send(m); } dt = = sp.getTableResult(sql); Thread.Sleep(10000); } }