比如时间到8点,开始发送,如果使用System.Thread.Timer,感觉很麻烦要总判断,有没有更好的方法呢?

解决方案 »

  1.   

    建立一个数据库的job,定时跑
      

  2.   

    http://blog.csdn.net/tjai110/archive/2007/01/23/1490763.aspx
    Google随便找的
      

  3.   

    System.Thread.Timer,感觉很麻烦要总判断,有没有更好的方法呢?
    ===》
    不需要总是判断也可以实现的。
    在应用程序启动的时候,初始化一个Timer,(8点钟 - 现在时间)  开始到计时,到点时触发事件,在回调里发送邮件。
    然后重新设置Timer,开始24小时到计时,在事件回调中发送邮件。
      

  4.   

    最简单的方法:创建一个任务,每天8点钟运行服务器本地的vbscript。你要自己做一个sendemail.aspx,或者console程序也不错(考虑到用到数据库,API等等,还是aspx比较好)。Const TaskURL = "http://localhost/sendemail.aspx"
    Const LogFileName = "Log.txt"Dim Http
    Private Function GetURL(URL)
      'Create Http object
      If IsEmpty(Http) Then Set Http = CreateObject("WinHttp.WinHttpRequest.5.1")
      'Send request To URL
      Http.Open "GET", URL
      Http.Send
      'Get response data As a string
      GetURL = Http.ResponseText
    End FunctionPrivate Sub AppendFile(FileName, Content)
    Const OPEN_FILE_FOR_APPENDING = 8
    Set fso = CreateObject("Scripting.FileSystemObject")
    Set TextFile = fso.OpenTextFile(FileName, OPEN_FILE_FOR_APPENDING, True)
    TextFile.Write(Content)
    TextFile.Close
    Set FileSystem = Nothing
    End Sub
    Content = GetURL(TaskURL)
    AppendFile LogFileName, Content
    'WScript.StdOut.WriteLine ("Appended response from " & DailyTaskURL & " to " & LogFileName)最好有个Log,知道做了些什么。跑了一年多都没有问题。