目前格式using System.Web.Mail;
using System.Timers;public partial class Send : System.Web.UI.Page
{
    System.Timers.Timer tim = new System.Timers.Timer(180000);//时间间隔    protected void Page_Load(object sender, EventArgs e)
    {
        tim.Elapsed += new ElapsedEventHandler(Timer_Elapsed);
        tim.AutoReset = true;
        tim.Enabled = true;
    }    private void Timer_Elapsed(object sender, System.Timers.ElapsedEventArgs e)
    {
        //当前时间        //查找数据库,在当前时间到当前时间+间隔时间内是否有邮件要发送         //有邮件要发送
             copyFile(list,subject,to,cc,body);//复制文件
             tim.Enabled = false;
    }    private void copyFile(ArrayList info, string subject, string to, string cc, string body)
    {
        //复制完后写入资料
            getConnStr(section, desFile);//写入资料
        //写完发送邮件
            sendEmail(subject, to, cc, body, list);//发送邮件
    }    private void getConnStr(string section, string desFile)
    {
       //写入资料
    }    private void sendEmail(string subject, string to, string cc, string body, ArrayList desFile)
    {
       //发送邮件
    }
}为什么Timer_Elapsed内的执行不了?如果直接sendmail是可以的,但是加上条件好像就不执行了...有谁做过类似的,帮我看下,谢谢~

解决方案 »

  1.   

    你把tim.AutoReset = true;
    和tim.Enabled = false;
    屏蔽掉,试试效果
      

  2.   

    tim 的生命周期在叶面执行时间内, 当然无法起作用, 你需要在gloabal.asax中开一个线程来做。
      

  3.   

    把你的代码放到Global.asax文件中,然后稍做修改:    void Application_Start(object sender, EventArgs e) 
        {
             System.Timers.Timer myTimer = new System.Timers.Timer(180000);
            myTimer.Elapsed += new System.Timers.ElapsedEventHandler(OnTimedEvent);
            myTimer.Interval = 180000;
            myTimer.Enabled = true;
        }    private static void OnTimedEvent(object source, System.Timers.ElapsedEventArgs e)
        {
            //这里执行你的邮件检查和发送操作
        }
      

  4.   

    to dugupiaoyun 
    如果,直接发送邮件的话,是可以的using System.Web.Mail;
    using System.Timers;public partial class Send : System.Web.UI.Page
    {
        System.Timers.Timer tim = new System.Timers.Timer(180000);//时间间隔    protected void Page_Load(object sender, EventArgs e)
        {
            tim.Elapsed += new ElapsedEventHandler(Timer_Elapsed);
            tim.AutoReset = true;
            tim.Enabled = true;
        }    private void Timer_Elapsed(object sender, System.Timers.ElapsedEventArgs e)
        {
            sendmail();
             //tim.Enabled = false;
        }    private void sendmail()
        {
            //发送邮件  
        }但是我需要的是,链接数据库,查找此时是否有邮件需发送,如果有则拷贝模板,写入数据,然后再发送邮件
    这个时候就没有效果了...