CSDN-CSDN社区-.NET技术-ASP.NET

收藏 Asp.Net 多线程 和 定时发邮件问题[问题点数:100,结帖人:Free_Wind22]

楼主发表于:2008-07-07 17:34:32
问题如下:
1.多线程发邮件
我现在做的比较简单,就是直接创建一个线程
public void SendMail(MailTemplate template, object info){
    this.template = template;
    this.info = info;

    Thread thread = new Thread(new ThreadStart(SendMailThread));
    thread.Start();
}
public void SendMailThread(){
    //这里用到了this.template 和 this.info
}

当发送一个邮件时候没问题,
如果连续调用2次,就出问题了,不知如何解决...

2.定时发邮件
在第一次给客户发邮件后,如客户在48小时内未做任务响应,则再发送一封邮件,不知这个功能如何实现..

各位帮忙看看,谢谢了...
回复次数:22
#1楼 得分:0回复于:2008-07-07 17:45:31
在线等,没人来吗...
#2楼 得分:20回复于:2008-07-07 17:53:33
#3楼 得分:5回复于:2008-07-07 17:55:08
帮顶。。
#4楼 得分:0回复于:2008-07-07 17:56:57
引用 2 楼 hubblebubblepig 的回复:
这里的this.template 和 this.info 是不是每个线程都是不一样的 已经有变化了?
你可以构造一个参数类 把它们作为参数传进SendMailThread方法里面
用System.Threading.ParameterizedThreadStart


嗯,是每个线程都不一样,以前没用过ParameterizedThreadStart这个,我去试试,谢谢!
#5楼 得分:5回复于:2008-07-07 18:04:50
定时发邮件这个功能实现了吗?正好公司要找一个这个东西。
  • tootto用户头像
  • tootto
  • (tootto)
  • 等 级:
#6楼 得分:25回复于:2008-07-07 18:27:29
#7楼 得分:0回复于:2008-07-07 18:38:38
楼上的,谢谢,第二题看不懂,,看来是要放弃了..

第一题 用了ParameterizedThreadStart 后,原来正常的都出错了...
不知道是不是程序没写好.
改动如下:
新建了一个类,保存2个参数
public class MailParameter {
    public MailTemplate template;
    public object info;
}
public void SendMail(MailTemplate template, object info){


    MailParameter para = new MailParameter();
    para.template = template;
    para.info = info;

    Thread thread = new Thread(new ParameterizedThreadStart(SendMailThread));
    thread.Start(para);
}

protected void SendMailThread(object para) {

    MailParameter mp = (MailParameter)para;
    MailTemplate template = mp.template;
    object info = mp.info;
    ......
}
这样写可以么??

还有,如在线程里出现异常,系统会不会自动抛出??
  • tootto用户头像
  • tootto
  • (tootto)
  • 等 级:
#8楼 得分:20回复于:2008-07-07 19:16:01
#9楼 得分:0回复于:2008-07-08 10:15:51
全局的也出错,,郁闷了...
#10楼 得分:5回复于:2008-07-08 10:19:25
好好想想,帮顶~
  • qq22345111用户头像
  • qq22345111
  • (你要舍得死,我就舍得埋)
  • 等 级:
#11楼 得分:10回复于:2008-07-08 11:04:55
2:定时发邮件
在第一次给客户发邮件后,如客户在48小时内未做任务响应,则再发送一封邮件,不知这个功能如何实现..

各位帮忙看看,谢谢了...
------------
数据库或者XML记录第一次发送邮件的时间data1 标志0
当data1+48小时后.你的打开邮箱(机器打开也行,去读发件人)
如果有.标志改为:1

else
重发
#12楼 得分:0回复于:2008-07-08 11:34:46
定时发邮件主要是时间的控制

比较笨的方法是一直开着一个页面,让他间隔一断时间去刷新

我想要一种比较好点的方法.
#13楼 得分:0回复于:2008-07-08 17:29:02
谁有好点的办法啊...
  • aiyumen用户头像
  • aiyumen
  • (自然就好)
  • 等 级:
#14楼 得分:10回复于:2008-07-08 17:37:02
你什么时候启动线程的?
你什么时候以哪种方式结束线程?
当你发送邮件时post到服务器,如果邮件发送后线程处于休眠状态,用户如何得到响应?
#15楼 得分:0回复于:2008-08-06 10:00:44
你想要客户如何响应你呢?
如果是链接,改变下存储的客户状态。
如果是回邮件...不是自己的邮件服务器可能麻烦多了。
我还是菜鸟。学习中
#16楼 得分:0回复于:2008-08-21 11:18:56
引用 10 楼 wenle1229 的回复:
好好想想,帮顶~
  • hbboyllh用户头像
  • hbboyllh
  • (战败神的人)
  • 等 级:
#17楼 得分:0回复于:2008-08-21 13:39:48
#18楼 得分:0回复于:2008-08-26 16:17:55
利用數據庫裡的質變化來trigger email會比較好 也比thread來的省
在利用window service (假如使用sql server或是oracle 可用裡面的scheuler 去寫 stored procedure)
#19楼 得分:0回复于:2008-09-01 13:33:12
#20楼 得分:0回复于:2008-10-19 17:03:52
像 这种需要定时发送的 我觉得 还是独立写一个 EXE 的后台应用程序 放在服务器上 一直运行

当用户需要定时发送的时候  把具体发送的时间写入数据库

由后台的应用程序 定时读取数据库中的时间 然后调用邮件发送程序 或者 直接发送
#21楼 得分:0回复于:2008-11-17 16:32:47
#22楼 得分:0回复于:2008-12-15 15:03:06
应该是端口被占用了吧。
相关问题
网站中如何实现定时发送邮件的程序.
超难得问题-----asp.net(C#)定时自动发送邮件问题
求助,定时任务
asp.net中如何实现计划任务?