先建一个单例类:
public readonly static SendEmailManagercs Instance = new SendEmailManagercs(); //声明一个静态的类变量
private SendEmailManagercs() //构造方法私有,外部代码不能直接new来实例化它
{
}
建立一个产品仓库(队列)
private Queue<JobInfo> q = new Queue<JobInfo>();
定义一个类存待处理产品的信息:
public class JobInfo
{
public string Email { get; set; }
public string Msg { get; set; }
}
构建成对象,向队列添加任务
public void AddJob(string toEmail, string msg)
{
JobInfo jjob = new JobInfo();
jjob.Email = toEmail;
jjob.Msg = msg;
q.Enqueue(jjob);//把任务放在队列中,生产一个“任务”
// logger.Debug("一个任务加进来了,Email=" + toEmail + ",内容=" + msg);
}
当应用程序启动的时候:
protected void Application_Start(object sender, EventArgs e)
{
SendEmailManagercs.Instance.Start();
}
启动线程:
public void Start()
{
Thread th = new Thread(threadStart);
th.Start();
logger.Debug("做任务线程已经启动");
}
private void threadStart()
{
while (true)
{
logger.Debug("有任务" + q.Count + "个");
if (q.Count > 0)
{
while (q.Count > 0)
{
//从队列中取出任务“消费”任务
JobInfo job = q.Dequeue();
try
{
MailSend.SendEmail(job.Email, job.Msg);
}
catch (Exception ex)
{
logger.Debug("向" + job.Email + "发送邮件错误!", ex);
}
}
}
else
{
logger.Debug("没有任务!");
Thread.Sleep(5000);//休息一会,防止CUP占用率过高
}
}
}
public readonly static SendEmailManagercs Instance = new SendEmailManagercs(); //声明一个静态的类变量
private SendEmailManagercs() //构造方法私有,外部代码不能直接new来实例化它
{
}
建立一个产品仓库(队列)
private Queue<JobInfo> q = new Queue<JobInfo>();
定义一个类存待处理产品的信息:
public class JobInfo
{
public string Email { get; set; }
public string Msg { get; set; }
}
构建成对象,向队列添加任务
public void AddJob(string toEmail, string msg)
{
JobInfo jjob = new JobInfo();
jjob.Email = toEmail;
jjob.Msg = msg;
q.Enqueue(jjob);//把任务放在队列中,生产一个“任务”
// logger.Debug("一个任务加进来了,Email=" + toEmail + ",内容=" + msg);
}
当应用程序启动的时候:
protected void Application_Start(object sender, EventArgs e)
{
SendEmailManagercs.Instance.Start();
}
启动线程:
public void Start()
{
Thread th = new Thread(threadStart);
th.Start();
logger.Debug("做任务线程已经启动");
}
private void threadStart()
{
while (true)
{
logger.Debug("有任务" + q.Count + "个");
if (q.Count > 0)
{
while (q.Count > 0)
{
//从队列中取出任务“消费”任务
JobInfo job = q.Dequeue();
try
{
MailSend.SendEmail(job.Email, job.Msg);
}
catch (Exception ex)
{
logger.Debug("向" + job.Email + "发送邮件错误!", ex);
}
}
}
else
{
logger.Debug("没有任务!");
Thread.Sleep(5000);//休息一会,防止CUP占用率过高
}
}
}